5

関数Aへのジェネリックのデリゲートを考えてみましょう。B

public delegate B Fun<A, B>(A x);

Fun次に、デリゲートを受け入れて呼び出す関数を記述します。

public static B invokeFun<A, B>(A x, Fun<A, B> f)
{ return f(x); }

(書くのが賢明かどうかは気にしないでくださいinvokeFun。)

デリゲートに名前を付けinvokeFunずに書くことはできますか? 私はこのようなものがうまくいくことを期待していますが、そうではありません:Fun

public static B invokeFun<A, B>(A x, B (A) f)
{ return f(x); }
4

1 に答える 1

7

いいえ、ありません。

最も近いものは、.NET 3.5 の 2 つの汎用デリゲート ファミリです:FuncAction. 明らかに、それらは実際には .NET 2.0 には存在しませんが ( .NETを除くAction<T>)、書くのは簡単です。

個人的には、"uber-short" 構文が無効であることを嬉しく思います。パラメーターの通常の "ここに型、ここに名前" 構文よりも理解しにくいと思います。

于 2008-10-09T16:48:37.680 に答える