C# Lambda语法如下所示:()=>;

C# Lambda语法如下所示:()=>;,c#,lambda,C#,Lambda,我遇到了lambda语法,我无法跟踪 Action act = () => object.Foo(null); 这应该如何解释?我知道如何使用lambda表达式,但我不清楚这个表达式。它是一个没有任何参数的lambda表达式。您将这样使用它: act(); act(2); 如果有参数,例如: Action act = x => object.Foo(x); 然后你会这样使用它: act(); act(2); 这是一个没有任何参数的lambda表达式。您将这样使用它: ac

我遇到了lambda语法,我无法跟踪

Action act = () => object.Foo(null);

这应该如何解释?我知道如何使用lambda表达式,但我不清楚这个表达式。

它是一个没有任何参数的lambda表达式。您将这样使用它:

act();
act(2);
如果有参数,例如:

Action act = x => object.Foo(x);
然后你会这样使用它:

act();
act(2);

这是一个没有任何参数的lambda表达式。您将这样使用它:

act();
act(2);
如果有参数,例如:

Action act = x => object.Foo(x);
然后你会这样使用它:

act();
act(2);
等同于(与不同)

其中,
act
是您调用内联而不是在类中定义它的方法

操作
是不返回结果的委托。还有一种类似的类型叫做
Func
,它返回一个结果

等同于(与不同)

其中,
act
是您调用内联而不是在类中定义它的方法


操作
是不返回结果的委托。还有一种类似的类型名为
Func
,它会返回结果。

代码与标题不匹配。在你的标题中,你把它倒过来了。你不清楚具体是哪一部分?如果你不认为这是重复的,请添加更多的解释“我知道如何使用lambda表达式,但我不清楚这个。”-我们如何才能知道,与您显然理解得很好的其他示例相比,这其中哪些方面让您感到困惑。而且,代码与您的标题不匹配。在你的标题中,你把它倒过来了。你不清楚具体是哪一部分?如果你不认为这是重复的,请添加更多的解释“我知道如何使用lambda表达式,但我不清楚这个。”-我们如何才能知道,与您显然理解得很好的其他示例相比,这其中哪些方面让您感到困惑。而且,不完全如此。除了你缺少虚空这一事实之外,虽然他们可能有相同的行为,但从根本上说,他们不是同一件事。附言-不是我投了反对票。@series0ne-我应该使用同等的、更好的措辞。不,它们不一样,但归根结底,这个动作是一个可以执行的方法(委托)。我修改了我的描述。我会根据你的编辑增加投票,但是act不是匿名的。。。它被称为“act”@DavidEtler-no。动作类型不返回结果(基本上是一个void方法)。如果要返回object.Foo的结果,那么它将是Func,并将返回类型指定为泛型。@DavidEtler-不一定。在这种情况下,类型操作不返回任何内容,它与lamda本身无关。如果您更改我在示例中提供的代码并保留私有方法
act
,您可以在类代码'Action someAction=this.act;'中的其他地方添加一行因为act是无效的,Action是不返回结果的方法的方法指针(委托)。有关更多信息,请参阅。不完全如此。除了你缺少虚空这一事实之外,虽然他们可能有相同的行为,但从根本上说,他们不是同一件事。附言-不是我投了反对票。@series0ne-我应该使用同等的、更好的措辞。不,它们不一样,但归根结底,这个动作是一个可以执行的方法(委托)。我修改了我的描述。我会根据你的编辑增加投票,但是act不是匿名的。。。它被称为“act”@DavidEtler-no。动作类型不返回结果(基本上是一个void方法)。如果要返回object.Foo的结果,那么它将是Func,并将返回类型指定为泛型。@DavidEtler-不一定。在这种情况下,类型操作不返回任何内容,它与lamda本身无关。如果您更改我在示例中提供的代码并保留私有方法
act
,您可以在类代码'Action someAction=this.act;'中的其他地方添加一行因为act是无效的,Action是不返回结果的方法的方法指针(委托)。有关更多信息,请参阅。