2010年2月21日日曜日

Delegate型の変数をパラメータとして使用してみる。

using System;

// Delegateを宣言
delegate void Delegate();

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

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

class MainClass
{
    // パラメータがDelegate型の変数のMethod
    static void printOut(Delegate del)
    {
        del();
    }

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

        /* パラメータにSampleClass型の
         * インスタンスMethodを渡す
         * (Delegate型の変数delにSampleClass型の
         * インスタンスMethod printOut1を登録)
         * 出力値:Delegate1 */
        printOut(sample.printOut1);

        /* パラメータにSampleClass型の
         * 静的Methodを渡す
         * (Delegate型の変数delにSampleClass型の
         * 静的Method printOut2を登録)
         * 出力値:Delegate2 */
        printOut(SampleClass.printOut2);
    }
}

0 コメント:

コメントを投稿