Loading [MathJax]/extensions/tex2jax.js

2012年11月24日土曜日

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

匿名メソッドってなに?
デリゲート型の変数に渡す関数をその場で定義するような感じ。
サンプル
前回までの例で説明すると、犬、猿に攻撃した後に一休みして、きじに攻撃させようというときに、 一休みを匿名メソッドで書いてみる。
  1. static void Main(string[] args)  
  2. {  
  3.     // 3人をお供に加える。  
  4.     Dog dog = new Dog();  
  5.     Monkey monkey = new Monkey();  
  6.     Kiji kiji = new Kiji();  
  7.   
  8.     // 攻撃の作戦をたてる  
  9.     //Attack[] attacks = new Attack[3];  
  10.     Action[] attacks = new Action[4];  
  11.     attacks[0] = dog.Attack;  
  12.     attacks[1] = monkey.Attack;  
  13.     attacks[2] = delegate()                //★匿名メソッド★  
  14.     {   
  15.         //ここで関数を直に定義している。  
  16.         Console.WriteLine("ここで一休み");   
  17.     };  
  18.     attacks[3] = kiji.Attack;  
  19.   
  20.     // 攻撃する  
  21.     for (int i = 0; i < attacks.Length; i++ )  
  22.     {  
  23.         attacks[i]();  
  24.     }  
  25.   
  26.     Console.ReadLine();  
  27. }  
どういうときに使うの?
よくわかってない。めんどくさいときにつかうのかな? 関数が短くて大量に必要なときとかかな?
0 件のコメント:
コメントを投稿