Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Значения, передаваемые в атрибуты, должны быть известны компилятору во время компиляции. Параметры атрибутов могут быть следующих типов:
boolchar,unsigned charshort,unsigned shortint,unsigned intlong,unsigned long__int64, без знака __int64float,doublewchar_tchar*илиwchar_t*илиSystem::String*System::Type ^System::Object ^enum
Пример: типы параметров атрибутов
Код
// 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
};
Пример: неименованные аргументы предшествуют именованным аргументам
Description
При определении атрибутов все неименованные (позиционные) аргументы должны предшествовать любым именованным аргументам.
Код
// 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
Пример: параметр атрибута одномерного массива
Description
Параметры атрибутов могут быть одномерными массивами указанных выше типов.
Код
// 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{};