2010-07-27 12 views
6

ReSharper sugeruje możemy zmienić:Używaj (pewnych) wyrażeń lambda podczas kierowania na .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; 

Wygląda czystsze bit. Ale kierujemy się na .NET 2.0. Czy nadal jest to coś, co powinniśmy zrobić?

Odpowiedz

11

Powinieneś wybrać, który z nich wolisz najbardziej. W C# 3.0 wszystkie wprowadzone funkcje (takie jak wyrażenie Lambda, metody rozszerzenia i LINQ) są oparte na środowisku wykonawczym 2.0 .NET. Możesz więc korzystać z C# 3.0 i uruchamiać go w wersji 2.0 środowiska wykonawczego.

Dopóki Twój kompilator może obsłużyć C# 3.0, możesz użyć wszystkich nowych funkcji C# 3.0. Jedyny wyjątek, jaki znam, to fakt, że jeśli używasz drzewek wyrażeń, musisz użyć dodatku SP1 dla systemu .NET 2.0, ponieważ niektóre poprawki błędów w środowisku CLR dla tego dodatku Service Pack są potrzebne do poprawnego działania drzewek wyrażeń.

8

Możesz go używać, dopóki używasz VS2008 (lub nowszego) do programowania. Wyrażenia lambdy to funkcja języka C#, jest to , a nie funkcja programu .Net Framework.

+0

Czy masz na myśli kompilator .NET 3.5 C#, który jest niezbędny? (która może budować kodowanie tylko w .net 2.0) –

+0

@ JimmyHofa: Tak, właśnie o to mi chodzi. – Giorgi

+0

Technicznie, kompilator C# 3.0 jest niezbędnym elementem. Nie ma czegoś takiego jak "kompilator .NET 3.5 C#" (ale większość ludzi może prawdopodobnie zgadnąć, co masz na myśli) – dss539