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

更新 : 2008 年 7 月

属性は、型、メソッド、プロパティなどの宣言に関係する情報を C# コードに関連付けます。プログラム要素に関連付けられた属性は、リフレクションと呼ばれる方法によって実行時に照会できます。詳細については、「リフレクション (C# プログラミング ガイド)」を参照してください。

属性には 2 つの形式があります。

  • 共通言語ランタイム (CLR: Common Language Runtime) に定義されている属性。

  • コードに特別な情報を追加するために、ユーザーが作成するカスタム属性。この情報は、後でプログラムによって取得できます。

次の例では、TypeAttributes.Serializable 属性を使用して、クラスに特定の特性を適用しています。

[System.Serializable]
public class SampleClass
{
    // Objects of this type can be serialized.
}

属性の概要

属性には、次の特徴があります。

  • 属性は、プログラムにメタデータを追加します。メタデータは、プログラム内で定義されている型に関する情報です。すべての .NET アセンブリに、指定した一連のメタデータが含まれ、そこにはそのアセンブリ内で定義されている型および型メンバが記述されています。カスタム属性を追加すると、必要な任意の追加情報を指定できます。

  • プログラムは、リフレクションを使用することにより、そのプログラム専用のメタデータや他のプログラム内のメタデータを調べることができます。詳細については、「リフレクションによる属性へのアクセス (C# プログラミング ガイド)」を参照してください。

  • COM 相互運用シナリオでは、MarshallAsare などの属性が広く使用されていました。詳細については、「System.Runtime.InteropServices.MarshalAsAttribute」および「System.Runtime.InteropServices.StructLayoutAttribute」を参照してください。

関連項目

詳細については、次のトピックを参照してください。

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 10.2.1 属性

  • 17 属性

参照

概念

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

属性の概要

属性の一般的な使用方法

参照

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

履歴の変更

日付

履歴

理由

2008 年 7 月

概要セクションを更新

コンテンツ バグ修正