属性の使用 (C# プログラミング ガイド)

更新 : 2007 年 11 月

属性は、ほとんどすべての宣言に使用できます。ただし、一部の属性は、特定の種類の宣言に対してのみ使用できます。属性を指定するときは、属性の名前を角かっこで囲み、適用するエンティティの宣言の前に置きます。たとえば、DllImport 属性をメソッドに適用する場合は、次のように宣言します。

[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();

詳細については、「DllImportAttribute クラス」を参照してください。

属性の多くにはパラメータがあり、位置、名前なし、または名前で特定されます。位置で決まるパラメータは、特定の順序で指定する必要があり、省略できません。名前付きのパラメータは省略でき、自由な順序で指定できます。位置で決まるパラメータを最初に指定します。たとえば、次の 3 つの属性は同じものです。

[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]

1 番目のパラメータである DLL 名は位置で決まるので、常に最初に指定する必要があります。それ以外のパラメータは名前付きです。この場合、名前付きパラメータはどちらも既定で false なので、省略できます。既定のパラメータ値については、各属性のドキュメントを参照してください。

1 つの宣言で複数の属性を指定できます。その場合、個別に角かっこで囲むか、または同じ角かっこの中に入れます。

void MethodA([In][Out] ref double x) { }
void MethodB([Out][In] ref double x) { }
void MethodC([In, Out] ref double x) { }

一部の属性は、特定のエンティティに対して 2 回以上指定できます。次の例では、Conditional 属性を 2 回使用しています。

[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
    // ...
}
48zeb25s.alert_note(ja-jp,VS.90).gifメモ :

規則では、属性名の終わりにはすべて "Attribute" が付きます。これにより、属性と .NET Framework の他の項目を区別できます。ただし、属性を使用するときには、必ずしもこのサフィックスを使用する必要はありません。たとえば、[DllImport] は [DllImportAttribute] と等価ですが、.NET Framework での属性の実際の名前は DllImportAttribute です。

参照

概念

C# プログラミング ガイド

参照

リフレクション (C# プログラミング ガイド)

属性 (C# プログラミング ガイド)

属性の対象の明確化 (C# プログラミング ガイド)

カスタム属性の作成 (C# プログラミング ガイド)

リフレクションによる属性へのアクセス (C# プログラミング ガイド)

Attribute

System.Reflection