2010-07-27 21 views
6

ReSharper cho thấy chúng ta thay đổi:Sử dụng (một số) biểu thức lambda khi nhắm mục tiêu .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; 

Nó trông hơi bụi. Nhưng chúng tôi đang nhắm mục tiêu .NET 2.0. Đây có phải là điều chúng ta nên làm không?

Trả lời

11

Bạn nên chọn cái nào trong số họ thích nhất. Trong C# 3.0, tất cả các tính năng được giới thiệu (như biểu thức Lambda, các phương thức mở rộng và LINQ) được xây dựng trên thời gian chạy .NET 2.0. Vì vậy, bạn có thể phát triển bằng cách sử dụng C# 3.0 và chạy nó trên 2.0 của thời gian chạy.

Miễn là trình biên dịch của bạn có thể xử lý C# 3.0, bạn có thể sử dụng tất cả các tính năng C# 3.0 mới. Ngoại lệ duy nhất tôi biết là nếu bạn sử dụng cây biểu thức bạn cần sử dụng .NET 2.0 SP1 vì một số sửa lỗi trong CLR cho gói dịch vụ đó là cần thiết để làm cho cây biểu thức hoạt động đúng cách.

8

Bạn có thể sử dụng nó miễn là bạn sử dụng VS2008 (hoặc mới hơn) để phát triển. Biểu thức Lambda là một tính năng của ngôn ngữ C#, đó là không phải là một tính năng của .Net Framework.

+0

Bạn có nghĩa là trình biên dịch .NET 3.5 C# là phần cần thiết không? (có thể xây dựng mã nhắm mục tiêu .net 2.0 chỉ) –

+0

@JimmyHofa: Vâng, đó là ý của tôi. – Giorgi

+0

Về mặt kỹ thuật, trình biên dịch C# 3.0 là phần cần thiết. Không có những thứ như ".NET 3.5 C# compiler" (nhưng hầu hết mọi người có thể đoán ý bạn là gì) – dss539

Các vấn đề liên quan