2010年1月26日火曜日

Delegateのマルチキャスティング機能を利用して、Delegate型の変数に複数のMethodを登録したり、あるいはMethodを削除したりしてみる。

using System;


delegate void SampleDelegate(int n,string s);


class MainClass
{
    static void printOut1(int n, string s)
    {
        Console.WriteLine("{0}:{1}", n, s);
    }
    static void printOut2(int n, string s)
    {
        Console.WriteLine("{0}:{1}", n + 1, s);
    }


    static void Main()
    {
        // SampleDelegate型の変数を宣言、Methodを登録
        SampleDelegate sample = printOut1;


        // 出力値:1:Sample
        sample(1, "Sample");


        // printOut2を追加
        sample += printOut2;


        /* 出力値
         * 2:Sample
         * 3:Sample */
        sample(2, "Sample");


        // printOut1を削除
        sample -= printOut1;


        // 出力値:4:Sample
        sample(3, "Sample");
    }
}

0 コメント:

コメントを投稿