0

把握できないコード行に出くわしました

少し説明させてください。

私が理解しているのは、次の行で「myDelegate」という名前のデリゲートのタイプを定義しているということです。この型は、シグネチャint(int、int)を持つ関数へのポインタを保持できます。

public delegate int myDelegate(int a, int b);

私が得られないのは次の行です:

public delegate T Func<T>(T a, T b);

.NET Frameworkですでに定義されているFuncというタイプを定義するのはなぜですか?

4

3 に答える 3

4

同じ名前とジェネリック型パラメーターの数を持つものがフレームワークで使用できる場合、独自のデリゲートを宣言することは確かに悪い考えのように思えますが、それは無効ではありません。これが自分が所有するコードである場合は、適切に名前を変更することをお勧めします。入力と出力の両方にFunc<T>使用しているものと同じではないことに注意してください。Tそれまたは類似のものを呼び出すことをお勧めしますBinaryOperator(ただし、二項演算子は同じオペランドタイプである必要はなく、戻り値も同じタイプである必要はありません)。

于 2011-07-27T10:20:10.260 に答える
0

Func 構文は利便性のためにあり、多くの場合、それらが提供するものを標準化する方が良いです。

Func と Action はどちらも便利で覚えやすいものです。対照的に、デリゲートの構文は少し扱いに​​くいと思います。

于 2011-07-27T10:21:18.550 に答える
0

.NETFunc<T>は異なります。

T Func<T>();
T2 Func<T1, T2>(T1 arg);
T3 Func<T1, T2, T3>(T1 arg1, T2 arg2);
.. etc

デリゲートの定義は間違っていません。.NET バージョンで混乱するのは名前付けです。

于 2011-07-27T10:21:57.827 に答える