C# 针对.NET 2.0时是否使用(某些)lambda表达式?

C# 针对.NET 2.0时是否使用(某些)lambda表达式?,c#,.net,lambda,C#,.net,Lambda,ReSharper建议我们改变: System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }; 进入: 看起来干净一点。但我们的目标是.NET2.

ReSharper建议我们改变:

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


看起来干净一点。但我们的目标是.NET2.0。这仍然是我们应该做的吗?

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

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


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

您是说.NET 3.5 C#编译器是必需的吗?(它只能构建针对.NET2.0的代码)@JimmyHofa:是的,这就是我的意思。从技术上讲,C#3.0编译器是必要的。没有像“.NET3.5C#编译器”这样的东西(但大多数人可能都能猜出你的意思)
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
    (sender, certificate, chain, sslPolicyErrors) => true;