Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nilai yang diteruskan ke atribut harus diketahui oleh pengkompilasi pada waktu kompilasi. Parameter atribut dapat berupa jenis berikut:
bool
char
,unsigned char
short
,unsigned short
int
,unsigned int
long
,unsigned long
__int64
, __int64 yang tidak ditandatanganifloat
,double
wchar_t
char*
atauwchar_t*
atauSystem::String*
System::Type ^
System::Object ^
enum
Contoh: Jenis parameter atribut
Kode
// 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
};
Contoh: Argumen yang tidak disebutkan namanya mendahului argumen bernama
Deskripsi
Saat menentukan atribut, semua argumen yang tidak disebutkan namanya (posisi) harus mendahului argumen bernama apa pun.
Kode
// 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
Contoh: Parameter atribut array satu dimensi
Deskripsi
Parameter atribut dapat berupa array satu dimensi dari jenis sebelumnya.
Kode
// 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{};