我试图弄清楚 C# 的匿名函数语法,但有些东西对我来说没有意义。为什么这是有效的
Func<string, string> f = x => { return "Hello, world!"; };
但这不是吗?
Func<string> g = { return "Hello, world!"; };
我试图弄清楚 C# 的匿名函数语法,但有些东西对我来说没有意义。为什么这是有效的
Func<string, string> f = x => { return "Hello, world!"; };
但这不是吗?
Func<string> g = { return "Hello, world!"; };
第二个仍然需要 lambda 语法:
Func<string> g = () => { return "Hello, world!"; };
首先,您正在有效地编写:
Func<string, string> f = (x) => { return "Hello, world!"; };
()
但是,如果只有一个参数,C# 将允许您在定义 lambda 时省略,x =>
而是让您编写。如果没有参数,则必须包含()
.
这在 C# 语言规范的第 7.15 节中指定:
在具有单个隐式类型参数的匿名函数中,可以从参数列表中省略括号。换句话说,表单的匿名函数
( 参数 ) => expr
可以简写为
参数 => expr