2010年1月7日木曜日

Delegateを定義して、+演算子を使用して複数(今の場合は2つ)のMethodを加えたり削除したりして実行してみる。

using System;


// Delegateを定義
delegate void SampleDelegate(int n);


class SampleClass
{
    public void sampleMethod1(int n)
    {
        Console.WriteLine("{0}:{1}", n, "Method1");
    }
    public void sampleMethod2(int n)
    {
        Console.WriteLine("{0}:{1}", ++n, "Method2");
    }
}


class MainClass
{
    static void Main()
    {
        // SampleClassをインスタンス化
        SampleClass sample = new SampleClass();
        // SampleDelegate型の変数sdを定義
        SampleDelegate sd = sample.sampleMethod1;
        // 出力値:1:Method1
        sd(1);
        // 改行
        Console.WriteLine();
        // sdにSampleMethod2を追加
        sd += sample.sampleMethod2;
        /* 出力値
         * 1:Method1
         * 2:Method2
         */
        sd(1);
        Console.WriteLine();
        // sdからsampleMethod1を削除
        sd -= sample.sampleMethod1;
        // 出力値:2:Method2
        sd(1);
    }
}

0 コメント:

コメントを投稿