我想弄清楚匿名函数的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指定:
在具有单个,隐式类型参数的匿名函数,括号可以从参数列表被省略。换句话说,形式
(PARAM)=>的匿名函数EXPR
可以缩写为
PARAM => EXPR
'Func键'(这是他的第二个例子是使用)是不带任何参数,并返回一个字符串的函数。 –
Servy
他正在使用:http://msdn.microsoft.com/en-us/library/bb534960.aspx –