2009-07-30 77 views
10

可能重複:
What to use: var or object name type?
Use of var keyword in C#
What’s the point of the var keyword?
Should I always favour implictly typed local variables in C# 3.0?C#var關鍵字的使用

我剛剛安裝了ReSharper的試用版,以評估它爲我的公司。我注意到一件事是它提示我更改以下(由爲例):

string s = ""; 

var s = ""; 

是否使用var關鍵字的最佳實踐,而不是使用對象在聲明變量時鍵入?它給了什麼好處。對於上下文,我是一位剛剛過渡到.Net作品的前Java開發人員。

+1

我覺得這回答了你的問題: http://stackoverflow.com/questions/17032/should-i-always-favour-implictly-typed-local-variables-in-c-3-0 – 2009-07-30 08:58:04

+2

Duplicates:http://stackoverflow.com/questions/209199/ whats-the-point-of-var-keyword和http:// stackoverflow。com/questions/236878/what-to-use-var-or-object-name -type – Noldorin 2009-07-30 08:58:34

回答

28

我認爲使用var可以讓代碼更容易閱讀,這對我來說意味着var正在取代的類型必須是完全明顯的。

例如,這將是一個良好的使用var(人爲的例子)的:

var thing = new Dictionary<int, KeyValuePair<string, int>>(); 

但是這將是一個不好用的var

var thing = GetThingFromDatabase(); 
12

我發現它在某些情況下,該類型聲明很長的幫助,例如:

Dictionary<int, string> item = new Dictionary<int, string>(); 

成爲

var item = new Dictionary<int, string>(); 
8

這是因爲使用var關鍵字達同樣的事情時,變量是隱含類型的,編譯器在構建時推斷類型。我更喜歡指定類型,而不是在大多數情況下使用var,所以我更改了我的resharper設置。

1

正如我記得那裏,Resharper只是說它可以這樣寫。它並沒有說你應該。

很多建議只是我第一次看到他們時所提出的建議。這就是其中之一。

另一個原因是它說寫了「this.someProperty」是多餘的,而我認爲通過這樣做代碼變得更容易閱讀。

0

Resharper還建議將if語句轉換爲true或不true。 幾乎一樣的東西,但它取決於你的編碼風格。 所以,當你發現使用var更舒適 - 使用這個建議。