0

我遇到了一行我似乎无法理解的代码

让我稍微解释一下。

我所理解的是,通过以下行,我定义了一种名为“myDelegate”的委托。这种类型可以保存一个指向具有签名 int (int, int) 的函数的指针

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

我没有得到的是以下行:

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

我的意思是为什么我要定义一个名为 Func 的类型,它已经在 .NET 框架中定义了?

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 回答