匿名方法如何省略参数列表?

时间:2014-04-07 21:06:33

标签: c# lambda anonymous-function anonymous-methods

我在Anonymous Methods (C# Programming Guide)的MSDN文档中阅读了这篇文章,但我不理解省略参数列表的部分。它说:

  

有一种情况是匿名方法提供功能   在lambda表达式中找不到。匿名方法使您可以省略   参数列表。这意味着匿名方法可以   转换为具有各种签名的代表。这不是   可以使用lambda表达式。

您能否提供一个省略匿名方法参数列表的示例?

1 个答案:

答案 0 :(得分:3)

我认为您对 lambda表达式匿名方法感到困惑。您需要了解的是lambda表达式只是 syntantic sugars 。例如,您可以创建一个带有2个整数参数的匿名方法,并返回integer,如下所示:

Func<int, int, int> func = delegate(int x, int y)
                           {
                                return x + y;
                           };

使用lambda语法,您可以将该语句缩短为:

Func<int, int, int> func2 = (x,y) => x + y;

此外,您并不需要将任何参数传递给lambda语句。例如,这完全有效:

Action act = () => Console.WriteLine("hello world");

因此,lambda表达式允许您使用 less 代码创建匿名方法,与匿名方法相比,它们没有任何缺点,因为它们完全是不同的东西。你正在将 apples oranges 进行比较。