属性

属性は、自作のメソッドやクラスに、既定または独自の機能や情報を付加する仕組み・・・。

今回は、自作のメソッドにConditionalAttributeを付ける・・・。

ConditionalAttribute クラス (System.Diagnostics)

ConditionalAttributeは、前回のような条件付きコンパイルに使うシンボルが定義されていたらそのメソッドを呼び出すというもの・・・。

// 名前空間の登録
using System;               // 共通データ型と基本クラス(System名前空間)
using System.Diagnostics;   // システムプロセスやイベントログとの対話するためのクラス.(System.Diagnostics名前空間)

// メインクラス
class MainClass // MainClassクラスの定義
{

    // メインメソッド
    static void Main()  // Mainメソッドの定義
    {

        // 属性付きメソッドTestを呼ぶ.
        Test(); // Testを呼ぶ.

        // "ABCDE"と出力.
        Console.WriteLine("ABCDE"); // Console.WriteLineで"ABCDE"と出力.

    }

    // 属性付きメソッドTest
    [Conditional("TEST")]   // 属性Conditional("TEST")は, シンボル"TEST"が定義されていれば呼ばれる.
    static void Test()
    {

        // "Test"と出力.
        Console.WriteLine("Test");  // Console.WriteLineで"Test"と出力.

    }

}

ConditionalAttributeを使うには、System.Diagnosticsが必要・・・。
メソッド定義の上に、"["と"]"の間に"Conditional"(属性のクラス名から"Attribute"を除いたもの)と書く・・・。
さらにその次の括弧の中にパラメータとしてシンボル"TEST"を書く・・・。
これで、このメソッドはConditionalAttributeという属性を持つ・・・。
"TEST"が条件付きコンパイルのシンボルとして定義されていれば、このメソッドTestが呼ばれた時にちゃんと実行される・・・。
定義されていなければ実行されない・・・。

このまま実行すると、

ABCDE
続行するには何かキーを押してください . . .

メソッドTestが実行されない・・・。

先頭で#defineディレクティブで"TEST"を定義すると、

Test
ABCDE
続行するには何かキーを押してください . . .

メソッドTestが実行された・・・。

Sample/cs/Attribute/Attribute/src/Attribute_ at master · bg1bgst333/Sample · GitHub