2012年11月24日土曜日

C# デリゲート3 (匿名メソッドってなに?)

匿名メソッドってなに?
デリゲート型の変数に渡す関数をその場で定義するような感じ。
サンプル
前回までの例で説明すると、犬、猿に攻撃した後に一休みして、きじに攻撃させようというときに、 一休みを匿名メソッドで書いてみる。
        static void Main(string[] args)
        {
            // 3人をお供に加える。
            Dog dog = new Dog();
            Monkey monkey = new Monkey();
            Kiji kiji = new Kiji();

            // 攻撃の作戦をたてる
            //Attack[] attacks = new Attack[3];
            Action[] attacks = new Action[4];
            attacks[0] = dog.Attack;
            attacks[1] = monkey.Attack;
            attacks[2] = delegate()                //★匿名メソッド★
            { 
                //ここで関数を直に定義している。
                Console.WriteLine("ここで一休み"); 
            };
            attacks[3] = kiji.Attack;

            // 攻撃する
            for (int i = 0; i < attacks.Length; i++ )
            {
                attacks[i]();
            }

            Console.ReadLine();
        }
どういうときに使うの?
よくわかってない。めんどくさいときにつかうのかな? 関数が短くて大量に必要なときとかかな?
0 件のコメント:
コメントを投稿