Funcでデリゲート
プログラミングC# 第6版 5.7
まだまだ続きますよ!デリゲートの話です。
Func
つまり今まで出てきたAction
っていうのは嘘で、Actionは無理でした。どうやらvoidは特殊らしく、T(TResult)に指定できませんでした。
Predicateはvoidが使われてないのでFuncでも表現できます。
using System; class Program { public static bool Foo (int i) { return i % 2 == 0; } static void Main () { // 以下二つは同じデリゲート Predicate<int> dobj1 = Foo; Func<int,bool> dobj2 = Foo; Console.WriteLine( dobj1(1) ); Console.WriteLine( dobj2(2) ); } }
$ main False True
ということでデリゲートを使う場合は基本的にはFuncとActionを使えば独自のデリゲートを用意しなくても良さそうですね。