2009年12月28日月曜日

eventキーワードを使用して、DelegateをEventとして定義してみる。

using System;


// Delegateを定義
delegate void EventHandler();


// イベントを発生させるクラス
class SampleClass
{
    /* evenEvent,unevenEventを
     * 匿名メソッドで初期化 */
    public event EventHandler
        evenEvent = delegate { };
    public event EventHandler 
        unevenEvent = delegate { };


    /* 1から10を表示(偶数のときはevenEvent,
     * 奇数のときはunevenEventを発生させる */
    public void NumberEvent()
    {
        for(int i=0;i<10;i++)
        {
            Console.Write(i);
            if (i % 2 == 0)
            {
                evenEvent();
            }
            else if (i % 2 == 1)
            {
                unevenEvent();
            }
        }
    }
}


class MainClass
{
    public static void Main()
    {
        SampleClass sample = 
            new SampleClass();
        // evenEventにEventHandlerを追加
        sample.evenEvent +=
            delegate
                Console.WriteLine(" 偶数"); };
        // unevenEventにEventHandlerを追加
        sample.unevenEvent +=
            delegate
                Console.WriteLine(" 奇数"); };
        sample.NumberEvent();
    }
}

0 コメント:

コメントを投稿