Actionでデリゲート
プログラミングC# 第6版 5.2
引き続きデリゲートの話です。
Action
でAction
まぁC++を先に勉強してるのでこれがテンプレートみたいなもん、というのは大体わかってるんですが、C#しか勉強したことない人もいると思うので本としては先にジェネリックの説明があっても良いもんだと思うんですけどねぇ。
まぁとりあえずAction
Action
まずは普通にdelegateを使った場合の確認です。
using System; delegate void Hoge (int i); class Program { public static void Foo (int i) { Console.WriteLine("Foo: " + i); } static void Main () { Hoge dobj = Foo; dobj(10); } }
$ main Foo: 10
これをAction
using System; class Program { public static void Foo (int i) { Console.WriteLine("Foo: " + i); } static void Main () { // 戻り値voidの引数intのデリゲート型 Action<int> dobj = Foo; dobj(10); } }
$ main Foo: 10
うまく動いてますね。
さらに本によるとAction
using System; class Program { public static void Foo (int i,string s) { Console.WriteLine("Foo: " + i + ": " + s); } static void Main () { Action<int,string> dobj = Foo; dobj(10,"test"); } }
$ main Foo: 10: test
バッチシ動いてますね。
ちなみにActionに指定できる引数の数は最大16個まで指定できるようです。引数多すぎですねー。