2010-07-27 5 views
6

ReSharper suggerisce cambiamo:Utilizzare (determinate) espressioni lambda quando si esegue il targeting su .NET 2.0?

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

Into:

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

sembra un po 'più pulito. Ma stiamo prendendo di mira .NET 2.0. È ancora qualcosa che dovremmo fare?

risposta

11

Dovresti scegliere quale di loro preferisci di più. In C# 3.0 tutte le funzionalità introdotte (come l'espressione Lambda, i metodi di estensione e LINQ) sono costruite sul runtime 2.0 .NET. Quindi puoi sviluppare usando C# 3.0 ed eseguirlo sul 2.0 del runtime.

Finché il tuo compilatore è in grado di gestire C# 3.0, puoi utilizzare tutte le nuove funzionalità di C# 3.0. L'unica eccezione che so è che se si utilizzano gli alberi di espressione, è necessario utilizzare .NET 2.0 SP1 poiché alcune correzioni di bug nel CLR per quel service pack sono necessarie per far funzionare correttamente gli alberi di espressione.

8

È possibile utilizzarlo finché si utilizza VS2008 (o successivo) per lo sviluppo. Le espressioni Lambda sono una caratteristica del linguaggio C#, è non una funzionalità di .Net Framework.

+0

Vuoi dire che il compilatore .NET 3.5 C# è il pezzo necessario? (che può creare solo il targeting del codice .net 2.0) –

+0

@JimmyHofa: Sì, questo è ciò che intendo. – Giorgi

+0

Tecnicamente, il compilatore C# 3.0 è il pezzo necessario. Non esiste il compilatore ".NET 3.5 C#" (ma la maggior parte delle persone può probabilmente indovinare cosa intendi) – dss539

Problemi correlati