Öznitelik Parametre Türleri (C++/CLI ve C++/CX)
Özniteliklere geçirilen değerlerin derleme zamanında derleyici tarafından bilinmesi gerekir. Öznitelik parametreleri aşağıdaki türlerden olabilir:
bool
char
,unsigned char
short
,unsigned short
int
,unsigned int
long
,unsigned long
__int64
, imzasız __int64float
,double
wchar_t
char*
veya veyawchar_t*
System::String*
System::Type ^
System::Object ^
enum
Örnek: Öznitelik parametre türleri
Kod
// attribute_parameter_types.cpp
// compile with: /clr /c
using namespace System;
ref struct AStruct {};
[AttributeUsage(AttributeTargets::ReturnValue)]
ref struct Attr : public Attribute {
Attr(AStruct ^ i){}
Attr(bool i){}
Attr(){}
};
ref struct MyStruct {
static AStruct ^ x = gcnew AStruct;
[returnvalue:Attr(x)] int Test() { return 0; } // C3104
[returnvalue:Attr] int Test2() { return 0; } // OK
[returnvalue:Attr(true)] int Test3() { return 0; } // OK
};
Örnek: Adsız bağımsız değişkenler adlandırılmış bağımsız değişkenlerden önce
Tanım
Öznitelikler belirtilirken, tüm adlandırılmamış (konumsal) bağımsız değişkenlerin adlandırılmış bağımsız değişkenlerden önce olması gerekir.
Kod
// extending_metadata_c.cpp
// compile with: /clr /c
using namespace System;
[AttributeUsage(AttributeTargets::Class)]
ref class MyAttr : public Attribute {
public:
MyAttr() {}
MyAttr(int i) {}
property int Priority;
property int Version;
};
[MyAttr]
ref class ClassA {}; // No arguments
[MyAttr(Priority = 1)]
ref class ClassB {}; // Named argument
[MyAttr(123)]
ref class ClassC {}; // Positional argument
[MyAttr(123, Version = 1)]
ref class ClassD {}; // Positional and named
Örnek: Tek boyutlu dizi öznitelik parametresi
Tanım
Öznitelik parametreleri, önceki türlerin tek boyutlu dizileri olabilir.
Kod
// extending_metadata_d.cpp
// compile with: /clr /c
using namespace System;
[AttributeUsage(AttributeTargets::Class)]
public ref struct ABC : public Attribute {
ABC(array<int>^){}
array<double> ^ param;
};
[ABC( gcnew array<int> {1,2,3}, param = gcnew array<double>{2.71, 3.14})]
ref struct AStruct{};
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin