ジェネリックなデリゲートの使い方

下記はListクラスのメンバForEachにおける使い方

void MyAction(int x) {
	Console.WriteLine(x);
}

int[] data = { 9, 2, 12, 17, 8, 1, 19 };
List list = new List(data);

// 使い方その1
Action myActionDelegate = new Action(MyAction);
list.ForEach(myActionDelegate);

// 使い方その2
Action myActionDelegate = MyAction;
list.ForEach(myActionDelegate);

// 使い方その3
list.ForEach(MyAction);

// 使い方その4
list.ForEach(Console.WriteLine);

// 使い方その5
list.ForEach(delegate(int x) { Console.WriteLine(x); } );

使い方その4は一瞬、ん?とか思ってしまうが確かにできる・・・。



参照
http://www.atmarkit.co.jp/fdotnet/special/generics02/generics02_01.html