Joh*_*n V 3 c# lambda delegates
我试图用lambda表达式替换以下语句:
List<ABC> l = new List<ABC>();
l.Find(delegate(ABC a) { return a.A == 4; });
Run Code Online (Sandbox Code Playgroud)
我试过了
l.Find((ABC a)=>a.A==4;);
Run Code Online (Sandbox Code Playgroud)
但这显然是不正确的.谢谢
为了完整,任何这些都是有效的:
// Fullest version
l.Find((ABC a) => { return a.A==4; });
// Infer the type of the parameter
l.Find((a) => { return a.A==4; });
// Single parameter - can remove the ()
l.Find(a => { return a.A==4; });
// Single expression - can remove braces and semi-colon
l.Find(a => a.A == 4);
Run Code Online (Sandbox Code Playgroud)
(您可以独立于其他快捷方式使用"单个表达式"部分.)
首先,请注意它仍然是委托 - 简单地说:它使用lambda语法而不是匿名方法语法(尽管它本质上意味着完全相同).
至于如何解决它:只需带走;:
l.Find((ABC a) => a.A == 4);
Run Code Online (Sandbox Code Playgroud)
或更简单地说:
l.Find(a => a.A == 4);
Run Code Online (Sandbox Code Playgroud)
(仅当您有多个参数时才需要括号;显式类型对于消除歧义很有用)
| 归档时间: |
|
| 查看次数: |
2357 次 |
| 最近记录: |