在针对.NET 2.0时使用(某些)lambda表达式?

ReSharper建议我们改变:

System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }; 

成:

 System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; 

它看起来更清洁。 但我们的目标是.NET 2.0。 这还是我们应该做的吗?

你应该选择你最喜欢哪一个。 在C#3.0中,所有引入的function(例如Lambda表达式,扩展方法和LINQ)都是在2.0 .NET运行时上构建的。 因此,您可以使用C#3.0进行开发,并在运行时的2.0上运行它。

只要您的编译器可以处理C#3.0,您就可以使用所有新的C#3.0function。 我所知道的唯一例外是,如果您使用表达式树,则需要使用.NET 2.0 SP1,因为需要CLR中针对该Service Pack的一些错误修复才能使表达式树正常工作。

只要您使用VS2008(或更高版本)进行开发,就可以使用它。 Lambda表达式是C#语言的一个特性,它不是 .Net Framework的一个特性。