2012-05-13 39 views
7

thể trùng lặp:
What's the point of the var keyword?
What advantages does using var have over the explicit type in C#?Tại sao sử dụng var thay vì tên lớp?

tôi luôn luôn nhìn thấy những người khác sản xuất mã như:

var smtp = new SmtpClient();

Nhưng tại sao lại sử dụng var thay vì SmtpClient trong trường hợp này? Tôi ALWAYS sử dụng

SmtpClient smtp = new SmtpClient();

Có phải là var hiệu quả hơn? Tại sao sử dụng var thay vì loại biến thực tế? Tui bỏ lỡ điều gì vậy?

+1

bản sao có thể có của [Lợi ích nào sử dụng var có loại rõ ràng trong C#?] (Http://stackoverflow.com/questions/3425966/what-advantages-does-using-var-have-over-the- rõ ràng-type-in-c) xem thêm [C# 'var' so với hiệu năng loại cụ thể] (http://stackoverflow.com/questions/356846/c-sharp-var-vs-specific-type-performance) –

+0

@MattBall Lol và ** RATNG ** một bản sao quá –

Trả lời

16

Hãy tưởng tượng điều này.

Dictionary<Dictionary<String, String>, String> items = new Dictionary<Dictionary<String, String>, String>(); 

var hữu ích cho những việc tương tự.

var items = new Dictionary<Dictionary<String, String>, String>(); 

Đơn giản hơn nhiều. Các điểm của var là giống như auto trong C++ 11, trình biên dịch biết loại như vậy tại sao chúng ta phải lặp lại chính mình rất nhiều. Cá nhân tôi sử dụng var hiếm khi, nhưng chỉ cho khai báo dài. Nó chỉ là cú pháp.

+0

Tôi sẽ defintalley bắt đầu sử dụng thường xuyên hơn –

15

Không, nó không phải là về hiệu quả, nó chỉ là về cách viết mã.

Xem xét đó là kiểu , quy tắc này không thể được áp dụng luôn là.

Immagine sau snipplet:

var myVar = Some3dPartFunction(), là những gì loại của myVar? Nó không hoàn toàn rõ ràng, và không tốt, từ quan điểm kiểu mã, để viết theo cách này.

Tóm lại, hãy chọn viết phù hợp theo cách thông minh.

+0

Điều đó có ý nghĩa, cảm ơn –

+1

Nếu bạn không thể cho biết hàm nào trả về từ tên của nó, đó là hàm bị đặt tên sai. –

+1

@ MatějZábský: trong một thế giới hoàn hảo, tôi sẽ đồng ý với bạn, nhưng mã hóa trong văn phòng thực tôi ** luôn luôn đáp ứng các chức năng xấu, biến, không nhận xét mã, không kiểm tra mã..vì vậy. Bạn không thể thiết kế một khuôn khổ để phù hợp với nhu cầu của thế giới hoàn hảo .. – Tigran

1

Đó là đường cú pháp:

var smtp = new SmtpClient(); 

bằng:

SmtpClient smtp = new SmtpClient(); 

Đó là một tính năng mới trong C# 3.0, gọi là kiểu suy luận.

1

Không hiệu quả hơn. Đó là điều tương tự của viết một cách rõ ràng loại. Infact nó là lập trình tốt viết loại biến thay vì sử dụng var bởi vì nó làm cho mã dễ đọc hơn.

Vì vậy:

var smtp = new SmtpClient(); 

Và:

SmtpClient smtp = new SmtpClient(); 

Are điều tương tự viết theo hai cách khác nhau.

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