繁体   English   中英

转换Lambda表达式C#2.0

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM