c# - 匿名 lambda ?

标签 c#

最接近下面的是什么?不幸的是,下面的方法名称编译错误。

int val = delegate(string s)
{
    return 1;
}("test");

我也尝试了 (...)=>{...} 语法,但它错得很厉害

最佳答案

两种形式的匿名函数(lambda 表达式和匿名方法)都需要转换为特定类型。所以这是有效的:

int val = ((Func<string, int>)(delegate(string s)
{
    return 1;
}))("test");

这也是:

int val = ((Func<string, int>)(s => 1))("test");

不过,我实际上并不建议使用它们中的任何一个。使用单独的局部变量更具可读性:

Func<string, int> del = s => 1;
int val = del("test");

(根据 yBee 的回答,您也可以使用类似构造函数的语法 - 但我个人更喜欢 cast 样式语法。)

关于c# - 匿名 lambda ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14896807/

相关文章:

c# - 单核cpu上的C#并行和多线程

C#:尝试以编程方式设置我网站的 "ServerBindings"属性,不断崩溃

c# - 将多个属性元数据添加到工作流事件中的依赖属性

c# - 在 C# 中查找列表中的多个重复值

c# - Rijndael 算法

c# - 从url获取正确的下载文件大小

c# - Silverlight:使用 UI Automation 模拟 RadioButton Click 事件?

c# - 目标框架版本为 4.7.2 的 C# 项目可以在 .net 4.6.1 上运行吗

c# - 遍历 C# 对象

c# - OrderBy 自定义比较器数字前的特定字母