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

Del*_*ted 6 .net c# lambda

ReSharper建议我们改变:

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

成:

System.Net.ServicePointManager.ServerCertificateValidationCallback +=
    (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)

它看起来更清洁.但我们的目标是.NET 2.0.这仍然是我们应该做的事情吗?

Run*_* FS 11

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

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


Gio*_*rgi 8

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