[英]Convert Lambda expression C# 2.0
如何转换表达式
v => names.Add(v); // Consider names as List<string> and v as string
进入c#2.0?
您可以使用匿名方法 :
Action<String> action = delegate (string v) { names.add(v); };
如果将现有的lambda表达式转换为委托,那将会有效。 将现有的lambda表达式转换为表达式树时, 它将无法工作。
(你真的需要使用C#2吗?Eek。不要忘记你可以使用C#3或更高版本,但仍然以.NET 2为目标,如果这是真正的要求。使用C#3及更高版本的生产力的好处真正使它可以升级你的Visual Studio版本......)
在此特定示例中,lambda箭头实际上只调用具有未更改参数列表的现有方法,您也可以只使用“方法组” 。
所以
v => names.Add(v)
可以用公正的替代品
names.Add /* OK in C# 2.0, method group conversion */
但是在lambda不仅仅等同于现有命名方法的一般情况下,使用匿名方法,如另一个答案建议:
delegate (string v) { names.Add(v); }
所有这些表达式都可以分配给委托类型,如Action<string>
,它有一个string
参数(value参数)并返回void
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.