2010-07-27 11 views
6

ReSharper sugiere cambiamos:¿Utiliza (ciertas) expresiones lambda al orientar .NET 2.0?

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

En:

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

se ve un poco más limpia. Pero apuntamos a .NET 2.0. ¿Es esto todavía algo que deberíamos hacer?

Respuesta

11

Debe elegir cuál de ellas prefiere más. En C# 3.0, todas las características introducidas (como la expresión Lambda, los métodos de extensión y LINQ) se basan en el tiempo de ejecución 2.0 .NET. Entonces puede desarrollar usando C# 3.0 y ejecutarlo en el 2.0 del tiempo de ejecución.

Siempre y cuando su compilador pueda manejar C# 3.0, puede usar todas las características nuevas de C# 3.0. La única excepción que conozco es que si usa árboles Expression, necesitaría usar .NET 2.0 SP1 porque algunas de las correcciones de errores en el CLR para ese service pack son necesarias para que los árboles de expresión funcionen correctamente.

8

Puede usarlo siempre que use VS2008 (o posterior) para el desarrollo. Las expresiones Lambda son una característica del lenguaje C#, es no una característica de .Net Framework.

+0

¿Quiere decir que el compilador .NET 3.5 C# es la pieza necesaria? (que solo puede generar código de orientación .net 2.0) –

+0

@JimmyHofa: Sí, eso es lo que quiero decir. – Giorgi

+0

Técnicamente, el compilador C# 3.0 es la pieza necesaria. No existe el "compilador .NET 3.5 C#" (pero la mayoría de las personas probablemente puedan adivinar lo que usted quiere decir) – dss539