2012-12-29 56 views

回答

7

您可以使用anonymous method代替:

Action<String> action = delegate (string v) { names.add(v); }; 

,将工作,如果现有的lambda表达式转换成一个代表。它不会工作时,现有的lambda表达式被转换为表达式树。

(你真的需要使用C#2,但?伊克。不要忘了,你可以使用C#3或更高,但仍然面向.NET 2,如果是这样的真正要求,生产力的好处对于使用C#3和更高版本,确实可以升级您的Visual Studio版本......)

+0

感谢@Jon为您的快速回复..将检查并回来.. – csLijo

+3

@csLijo:还记得.NET 3.5只是.NET 2.0 SP2的一些额外的程序集。假设您不使用新功能,它与服务包一样安全,因此与您正在使用的新功能一样危险。 –

+0

谢谢@Jon:问题解决 – csLijo

1

在这个特定的示例中,lambda箭头实际上只是调用已存在的未经更改参数列表的方法,您也可以使用“方法组”

所以

v => names.Add(v) 

可以只用

names.Add /* OK in C# 2.0, method group conversion */ 

被取代,但在拉姆达不只是等同于现有的命名方法,一般情况下,使用匿名方法像其他答案建议:

delegate (string v) { names.Add(v); } 

所有这些表达式都可以分配给委托类型如Action<string>有一个string参数(值参数)并返回void