2009年12月27日日曜日

Delegateにint型の戻り値を返す複数のMethodを登録したり解除したりしてみる。
using System;


delegate int Sample(int n);


class MainClass
{
    class SampleClass
    {
        public int Method1(int n)
        {
            return n;
        }


        public int Method2(int n)
        {
            return ++n;
        }
    }


    public static void Main()
    {
        SampleClass sample = new SampleClass();
        // Method1を登録
        Sample del1 = sample.Method1;
        // del1にMethod2も登録
        del1 += sample.Method2;
        /* 返される戻り値が最後に実行される
         * Metho2の1であることを確認 */
        // 出力値:1
        Console.WriteLine(del1(0));


        /* Method1とMethod2を同時に登録 エラー
         * メソッドグループとメソッドグループで
         * +演算子を使用することはできないみたい
        Sample del2 =
         sample.Method1 + sample.Method2; */


        /* Method1とMethod2をそれぞれdel3,del4に
         * 登録して+演算子を利用する */
        Sample del3 = sample.Method1;
        Sample del4 = sample.Method2;
        // 返される戻り値の確認
        Sample del5 = del4 + del3;
        // 出力値:0
        Console.WriteLine(del5(0));


        // del1からMethod1を解除
        del1 -= sample.Method1;
        // 出力値:1
        Console.WriteLine(del1(0));
        // del5からMethod2を解除
        del5 -= sample.Method2;
        // 出力値:0
        Console.WriteLine(del5(0));
    }
}

0 コメント:

コメントを投稿