Từ MSDN :
Tuy nhiên, việc sử dụng var ít nhất có khả năng làm cho mã của bạn trở nên khó hiểu hơn đối với các nhà phát triển khác. Vì lý do đó, tài liệu C # thường chỉ sử dụng var khi được yêu cầu.
Tôi thực sự, thực sự không thích gõ ngầm. Nhìn bề ngoài, nó có xu hướng làm cho mã dễ đọc hơn, nhưng có thể dẫn đến nhiều vấn đề trong quá trình sử dụng. Nếu một nhà phát triển thay đổi một trình khởi tạo biến, giả sử, từ
var myFloat=100f;
đến
var myFloat=100;
hoặc là
var myFloat=100.0;
Loại sẽ thay đổi, dẫn đến toàn bộ hàng loạt lỗi biên dịch hoặc, nếu nó ở chế độ xem web và bạn không sử dụng bước hậu xây dựng để biên dịch trước các chế độ xem của mình, toàn bộ lỗi thời gian chạy sẽ không bị bắt mà không có hiệu quả thử nghiệm trước khi triển khai.
Gõ ngầm cũng không hoạt động ở mọi nơi (từ cùng một liên kết MSDN)
var chỉ có thể được sử dụng khi một biến cục bộ được khai báo và khởi tạo trong cùng một câu lệnh; biến không thể được khởi tạo thành null hoặc nhóm phương thức hoặc hàm ẩn danh.
var không thể được sử dụng trên các trường ở phạm vi lớp.
Các biến được khai báo bằng cách sử dụng var không thể được sử dụng trong biểu thức khởi tạo. Nói cách khác, biểu thức này là hợp pháp: int i = (i = 20); nhưng biểu thức này tạo ra lỗi thời gian biên dịch: var i = (i = 20);
Nhiều biến được gõ ngầm định không thể được khởi tạo trong cùng một câu lệnh.
Nếu một loại có tên var nằm trong phạm vi, thì từ khóa var sẽ phân giải thành tên loại đó và sẽ không được coi là một phần của khai báo biến cục bộ được gõ ngầm.
Giữ mã của bạn nhất quán (trong trường hợp này, sử dụng gõ rõ ràng ở mọi nơi) là một điều rất, rất tốt. Theo tôi, var
lười biếng và không mang lại lợi ích thực sự, và đưa ra một điểm thất bại tiềm năng khác trong một quy trình vốn đã phức tạp.
Cập nhật 2017
Tôi hoàn toàn thay đổi suy nghĩ của mình. Khi làm việc trong C #, tôi sử dụng var
hầu hết thời gian (ngoại trừ những thứ như biến kiểu giao diện, v.v.). Nó giữ mã terse giúp cải thiện khả năng đọc. Tuy nhiên, mặc dù - chú ý đến loại giải quyết thực sự là gì.