2010年2月21日日曜日

Delegate型の変数に複数のインスタンスメソッドや静的メソッドを登録したり(マルチキャスティングの機能)、削除したりして複数のMethodが実行されることを確認してみる。

using System;

delegate void Delegate();

class SampleClass
{
    public void printOut1()
    {
        Console.WriteLine("Delegate1");
    }

    // 静的Method
    public static void printOut2()
    {
        Console.WriteLine("Delegate2");
    }

    public void printOut3()
    {
        Console.WriteLine("Delegate3");
    }
}

class MainClass
{
    static void Main()
    {
        // SampeClassをインスタンス化
        SampleClass sample = new SampleClass();

        // Methodを登録
        Delegate del = sample.printOut1;

        // 出力値:Delegate1
        del();

        // Methodをさらに登録
        del += SampleClass.printOut2;

        /* 出力値
         * Delegate1
         * Delegate2 */
        del();

        // Methodをさらに登録
        del += sample.printOut3;

        /* 出力値
         * Delegate1
         * Delegate2
         * Delegate3 */
        del();

        // Methodを削除
        del -= sample.printOut1;

        /* 出力値
         * Delegate2
         * Delegate3 */
        del();
    }
}

0 コメント:

コメントを投稿