c# - 定义一个lambda函数并立即执行

标签 c# lambda

我正在定义一个 lambda 并立即通过附加“()”来调用它。

尝试:

int i = (() => 0) ();

错误:

Error CS0119: Expression denotes a anonymous method', where amethod group' was expected

这是为什么?

最佳答案

您不是在“定义 lambda”..您是在用括号括起您认为是 1 的内容。

编译器不会推断出这种类型的事情。它需要上下文。您可以通过将 lambda 的表示分配或强制转换为委托(delegate)类型来为其提供上下文:

Func<int> f = () => 0;
int i = f();

上下文很清楚。如果你想要一个不清楚的..这种事情也有效:

int i = ((Func<int>)(() => 0))();

关于c# - 定义一个lambda函数并立即执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24220442/

相关文章:

c# - 无法从 'void' 转换为 'System.Action'

c# - 如何实例化新的结构对象?

c# - 用扩展方法替换字符串值

c# - 使用 LINQ 时从字符串访问 lambda 表达式中的属性

java - 如何在 lamda 表达式中使用 super::methodName 引用方法的父类(super class)版本

c# - Visual Studio 2015 的 MVC 片段?

c# - 使用 SignalR 输出绑定(bind)的 CosmosDB Azure 函数触发器

java - 在Java中如何用List编写for循环?

c# - 将 foreach 循环更改为 lambda

c# - 传入此 lambda 表达式的值是什么?