属性の概要

更新 : 2007 年 11 月

C++ の経験がある場合は、クラス メンバについての追加情報を指定する publicprivate などのキーワードを含む宣言について、既にご存知であると思います。これらのキーワードは、ほかのクラスへのアクセシビリティを記述して、クラス メンバの動作をさらに詳しく定義します。コンパイラは定義済みのキーワードを認識するように明示的にデザインされていたため、以前は独自のキーワードを作成することがありませんでした。しかし、共通言語ランタイムでは、属性と呼ばれるキーワードに似た記述的な宣言を追加して、型、フィールド、メソッド、プロパティなどのプログラミング要素に注釈を付けることができます。

ランタイム用にコードをコンパイルすると、コードは Microsoft Intermediate Language (MSIL) に変換され、コンパイラによって生成されるメタデータと共に、ポータブル実行可能 (PE) ファイルに格納されます。属性を使用すると、ランタイム リフレクション サービスで抽出できる記述的な情報をメタデータに追加できます。属性は、System.Attribute から派生する特殊なクラスのインスタンスを宣言するときに、コンパイラによって作成されます。

.NET Framework では、属性がさまざまな理由と目的で使用されます。属性を使用して、データをシリアル化する方法を記述したり、セキュリティの適用に使用する特性を指定したりします。また、コードをデバッグしやすい状態に保つためにジャスト イン タイム (JIT) コンパイラによる最適化を制限する場合も、属性を使用します。さらに、ファイル名やコードの作成者の記録、およびフォームの開発時にコントロールやメンバを表示するかどうかの制御も、属性で指定します。

属性を使用すると、事実上何の制限もなしにコードを記述し、新しい方法で実行時の動作を指定できます。属性を使用すると、ユーザーが独自に記述する要素を、C#、Visual C++、Microsoft Visual Basic 2005 のほか、ランタイムに対応するすべての言語に、コンパイラを再使用せずに追加できます。

参照

参照

System.Attribute

その他の技術情報

属性を使用したメタデータの拡張