ser*_*0ne 1 c# lambda roslyn c#-6.0
请考虑以下表达式:
public override string ToString() => "ABCDEFG";
Run Code Online (Sandbox Code Playgroud)
汇编到这个:
public override string ToString()
{
return "ABCDEFG";
}
Run Code Online (Sandbox Code Playgroud)
尽管这种语法是语法糖,但我希望ToString()等同于Func<string>
Func<string> ToString = () => { return "ABCDEFG"; };
Run Code Online (Sandbox Code Playgroud)
请注意,Func<string>需要一个return语句,但ToString()覆盖的lambda语法不需要.
为什么覆盖的Lambda语法不需要使用return?
Jon*_*eet 13
首先,它不是 lambda表达式 - 它只是表达体成员(在C#6中引入)也使用了语法=>.它们不涉及创建委托实例或表达式树.
至于为什么return不需要 - 在lambda表达式中也不需要它们,当它们是表达式的lambda表达式时:
Func<string> toString = () => "ABCDEFG";
Run Code Online (Sandbox Code Playgroud)
自从lambda表达式在C#3中引入以来,这是真的,并且是LINQ中最常见的情况,例如
var query = strings.Where(x => x.Length > 3)
.Select(x => x.ToUpperInvariant());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1443 次 |
| 最近记录: |