我正在试图弄清楚C#的匿名函数的语法,而且对我来说没有意义。为什么这是有效的
Func<string, string> f = x => { return "Hello, world!"; };
但这不是?
Func<string> g = { return "Hello, world!"; };
答案 0 :(得分:28)
第二个仍然需要lambda语法:
Func<string> g = () => { return "Hello, world!"; };
首先,你有效地写作:
Func<string, string> f = (x) => { return "Hello, world!"; };
但是,如果只有一个参数,那么在定义lambda时,C#会让你不用()
,而是让你写x =>
。如果没有参数,则必须包含()
。
这在C#语言规范的第7.15节中指定:
在具有单个隐式类型参数的匿名函数中,可以从参数列表中省略括号。换句话说,形式的匿名函数
(param)=&gt; EXPR
可以缩写为
param =&gt; EXPR
答案 1 :(得分:-2)