没有输入参数的匿名函数

时间:2013-05-16 20:06:50

标签: c# anonymous-function

我正在试图弄清楚C#的匿名函数的语法,而且对我来说没有意义。为什么这是有效的

 Func<string, string> f = x => { return "Hello, world!"; };

但这不是?

 Func<string> g = { return "Hello, world!"; };

2 个答案:

答案 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)

您需要知道函数定义:

  

封装具有一个参数的方法并返回值   由TResult参数指定的类型。

参考文献:

Microsoft

相关问题