C# 属性
属性:クラス,メンバに追加情報を与えるもの.
C++などの既存の言語では,追加情報を定義する場合,言語仕様自体を拡張し,新たにコンパイラを作り直す必要があった.C#では自分で属性を定義し,クラスやメンバに付加することができる.すなわち,ライブラリて提供されている属性や自作した属性を用いることで,コンパイラに対する指示を行ったり,クラスの利用者に対する情報を残すことができる.
属性の一例としては,,,
属性の使い方
属性は以下のようにして,クラスやメンバの前につけて使う.
[属性名(属性パラメータ)] メンバーの定義
下記のように使うと,DEBUG_PRINTというシンボルが定義されている時のみメソッドが実行される.
[Conditional("DEBUG_PRINT")] static void DebugOutput(double[] array) { printf("Debug Mode") }
定義済み属性
標準ライブラリによって提供されている定義済み属性
属性の対象
属性をつける場所によって対象が変わるが,つける位置によってあいまいになることがある.この曖昧さを取り除くため,明示的に属性の対象を指定する構文がある.
[属性の対象:属性名(属性のオプション)]
[method: DllImport("msvcrt.dll")] [return: MarsharlAs(UnmanagedType.I4)] public static extern int puts([param: MarshalAs(UnmanagedType.LPStr)] string m)