以下语法中Group1和Group2之间的区别是什么。我刚刚开始使用这些类型的表达式,我看到一个具有委托并且看起来像一个函数(大多数情况下),然后我看到Group1(=>
)具有这种语法,我不确定哪个是不同的或哪个更好。
它还说Func<>
应该只接受两个参数,但在Group1示例中它需要三个变量。这是为什么?
http://msdn.microsoft.com/en-us/library/bb549151(v=vs.110).aspx
Group1
Action<bool> print1 = q => Console.WriteLine(q);
Action<int> printInt = q => Console.WriteLine(q);
Func<double, double> square1 = c => c * c;
Func<double, double, double> add1 = (x, y) => x + y;
Predicate<double> isLessThanTen1 = f => f < 10;
Group2
Func<string, string> convert = delegate(string s)
{
return s.ToUpper();
};
答案 0 :(得分:3)
组1是创建委托的简便方法,无需delegate()。这是“首选”,因为它更短,更容易阅读。
换句话说
Func<int, void> == Action<int>
和
Func<int, bool> == Predicate<int>
在您链接到的MSDN页面中,还有Func&lt;&gt;的其他重载。这需要不同数量的参数。例如,here's一个接受4个参数的版本。
该主题的最佳资源之一是C# in Depth Jon Skeet。它给出了代表的良好历史以及每个C#版本的语法更改。