Tôi đã tạo dự án mới trong Visual Studio với khung mục tiêu 2.0. Nhưng ngay cả khi tôi rời khỏi đâu đó var
từ khóa Visual Studio biên dịch thành công dự án. Đây có phải là hành vi đúng như var
là tính năng 3.0 không? Có bất kỳ cài đặt nào để ngăn mã với var
được biên dịch không?Làm cách nào để không cho phép từ khóa var trong mục tiêu .net 2.0?
Trả lời
var
là một tính năng của C# 3.0, nhưng nó không đòi hỏi bất kỳ khuôn khổ tính năng. Nói cách khác, nó hoàn toàn tốt để sử dụng trong một dự án nhắm mục tiêu .NET 2.0. Điều tương tự cũng đúng với nhiều tính năng khác - loại ẩn danh, thuộc tính tự động, biểu thức lambda, v.v.
Xem versions article để biết thêm thông tin. (Tôi cần cập nhật nó cho C# 4 tại một số thời điểm ...)
Nếu bạn muốn để giới hạn bản thân bằng C# 2.0, bạn có thể chỉ định phiên bản ngôn ngữ bằng cách nhấp vào "Nâng cao" trong tab Xây dựng của thuộc tính dự án, IIRC. (Chắc chắn có nơi nào đó, nhưng tôi muốn có một tách cà phê hơn là kiểm tra vị trí chính xác ngay bây giờ.)
Miễn là dự án của bạn sẽ luôn được biên dịch bằng Visual Studio 2008 hoặc mới hơn, bạn an toàn để sử dụng các tính năng C# 3.0. Mục tiêu .NET 2.0 chỉ hạn chế những thư viện nào bạn có thể sử dụng, chứ không phải những tính năng ngôn ngữ nào.
Mục đích tại sao tôi cần hạn chế mã của tôi thành 2.0 mà nó được cho là được biên dịch theo .NET Framework 2.0 thuần túy sau đó. – DixonD
var
hoàn toàn là một tính năng thời gian biên dịch, một khi lắp ráp được biên dịch, trình biên dịch chèn thực tế loại và thực tế là bạn đã sử dụng var
là "bị mất".
Vì vậy, một dự án đang nhắm mục tiêu phiên bản 2.0 của khuôn khổ vẫn có thể sử dụng tính năng var
, bởi vì nó không thực sự ảnh hưởng đến lắp ráp được xuất ra theo bất kỳ cách nào.
Hoặc thay thế toàn văn bằng var bằng 1var1 và thay thế bằng tay hoặc sử dụng phiên bản trình biên dịch trước 3.0.
- 1. Có sử dụng từ khóa var bad trong C# 2.0 không?
- 2. Làm thế nào để giải quyết/var/www sao chép/ghi cho phép từ chối?
- 3. Cho phép không gian trong mục tiêu của GCC makefile
- 4. chênh lệch giữa var từ khóa và không var
- 5. Mật mã .NET cho khóa cấp phép?
- 6. Làm cách nào để chọn 10 từ khóa hàng đầu từ một từ điển trong .NET?
- 7. Không thể nhắm mục tiêu .NET 2.0 trong Visual Studio 2010
- 8. Có cách nào để trích xuất .NET 2.0 từ .NET 3.5 không?
- 9. Cách lấy giá trị cho mỗi khóa trong từ điển trong Mục tiêu-C?
- 10. Tiêu đề cấp phép OAuth 2.0
- 11. var: a Loại hoặc từ khóa
- 12. Có bộ sưu tập <string, object> từ điển nào cho phép nhiều khóa không?
- 13. Không .NET 4.0 có .NET 2.0 không?
- 14. Mục tiêu-C 2.0 Đặc tả ABI
- 15. Tôi vẫn có thể nhắm mục tiêu .NET Framework 2.0 trong VisualStudio 2010?
- 16. Micro-ORM cho .Net 2.0?
- 17. Đối số tùy chọn trong Mục tiêu-C 2.0?
- 18. Làm cách nào để nhắm mục tiêu .NET 4 Client Profile cho C++/CLI trong Visual Studio 2010?
- 19. Tiêu chuẩn cho phép #pragma làm gì?
- 20. Cho phép nhập khóa để đăng nhập trong asp.net?
- 21. Làm cách nào để phát hiện các ký tự không thể in trong .NET?
- 22. Làm cách nào để đổi tên mục tiêu trong Maven?
- 23. Trong C# .NET 2.0, một cách dễ dàng để làm một foreach ngược lại là gì?
- 24. Lỗi "Từ khóa không được hỗ trợ:" trong ASP .NET
- 25. Làm thế nào để hỗ trợ .NET 2.0 và .NET 4.0 trong một ứng dụng?
- 26. Làm cách nào để đặt trường tiêu đề Http trong mục tiêu-C?
- 27. Từ khóa "var" có làm giảm khả năng đọc mã không?
- 28. Sử dụng (một số) biểu thức lambda khi nhắm mục tiêu .NET 2.0?
- 29. Làm cách nào để cho phép người dùng mạo danh trong Tridion 2009?
- 30. Truyền giá trị động làm chìa khóa cho Bản đồ trong JSF 2.0
+1./langversion (C# Compiler Options) (http://msdn.microsoft.com/en-us/library/f4ckecs0.aspx) – desco
Cảm ơn cả Jon và desco! Đây chính xác là những gì tôi muốn - để hạn chế các tính năng ngôn ngữ đối với C# 2.0. – DixonD