C#委托Func

时间:2011-07-27 10:18:09

标签: c# delegates func

我遇到了一些我似乎无法掌握的代码

让我解释一下。

我所理解的是,通过以下行,我定义了一个名为“myDelegate”的委托类型。此类型可以包含指向具有签名int(int,int)

的函数的指针
public delegate int myDelegate(int a, int b);

我没有得到的是以下一行:

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

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

3 个答案:

答案 0 :(得分:4)

当框架中有一个具有相同名称和通用类型参数数量的委托时,声明自己的委托似乎是个坏主意 - 但它不是无效。我建议如果这是你拥有的代码,你可以适当地重命名它。请注意,它与Func<T>不同,因为它对输入和输出都使用T。您可能希望将其称为BinaryOperator或类似的东西(尽管二元运算符不必具有相同的操作数类型,返回值也不必是相同的类型)。

答案 1 :(得分:0)

Func语法是为了方便起见,通常最好是标准化他们提供的东西。

Func和Action既方便又易于记忆。相比之下,我发现委托语法有点笨拙。

答案 2 :(得分:0)

.NET Func<T>不同:

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

委托定义没有错,它的命名会让.NET版本混淆。