繁体   English   中英

C#代表Func

[英]C# delegate Func

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

让我解释一下。

我的理解是,在下面的行中,我定义了一种名为“ myDelegate”的委托人类型。 此类型可以保存带有签名int(int,int)的函数的指针

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

我没有得到的是以下行:

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

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

好吧,当框架中具有相同名称和数量的泛型类型参数时,声明您自己的委托肯定是一个坏主意-但这不是无效的 我建议,如果这是您拥有的代码,请对其进行适当的重命名。 请注意,它与Func<T>因为它在输入和输出上都使用了T 您可能要称其为BinaryOperator或类似名称(尽管二进制运算符不必具有相同的操作数类型,返回值也不必具有相同的类型)。

Func语法很方便,通常最好对它们提供的恕我直言进行标准化。

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

.NET Func<T>是不同的:

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

委托定义是没有错的,这就是.NET版本的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM