2011-02-01 109 views
114

可能重複:
ReSharper and var爲什麼我應該使用var而不是類型?

我已經安裝了ReSharper的,它要求(通過警告)之後,我使用VAR只要有可能,例如

UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t; 

ReSharper的希望把它變成

var ue = (UnhandledExceptionEventArgs) t; 

我喜歡第一個版本更好,有什麼理由更喜歡var?更好的性能?什麼?或者它只是一種代碼風格?

+0

其他重複http://stackoverflow.com/questions/296783/resharper-vars http:// stackoverflow。com/questions/1010480/why-does-resharper-default-to-warning-if-you-dont-declare-using-var http://stackoverflow.com/questions/1873873/why-does-resharper-want-to -use-var-for-everything http://stackoverflow.com/questions/1299045/is-resharper-correct – 2011-02-01 22:10:15

+0

-1:這已被覆蓋* so *以前多次,重複很容易通過搜索網站找到。 – 2011-02-01 22:12:47

+4

@Greg Beech我不同意,不是每個人都知道它是一個ReSharper的bug,我認爲這意味着什麼,但我錯了。 – IAdapter 2011-02-01 22:14:38

回答

29

當你說 「的警告,」 你到底是什麼意思?我通常看到它給你一個提示,你可能可能想要使用var,但沒有像警告那樣苛刻。

與var沒有性能差異 - 代碼被編譯爲相同的IL。潛在的好處在於可讀性 - 如果您已經在作業的RHS(例如,通過演員或構造函數調用)上使變量類型清晰可見,那麼LHS上的好處還有哪些?不過這是個人喜好。

如果您不希望R#建議使用var,只需更改選項即可。一件事ReSharper的:這是非常配置:)

10

這種情況下它只是編碼風格。

只有在處理匿名類型時才需要使用var
在其他情況下,這是一個品味問題。

10

正如其他人所說,有在編譯的代碼(IL)沒有差異,當您使用以下兩種:

var x1 = new object(); 
object x2 = new object; 

我想ReSharper的警告你,因爲它是[在我看來]更容易讀第一個例子比第二個例子。此外,需要重複兩次該類型的名稱?

考慮下面,你會明白我的意思:

KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5)); 

這是比較容易的方式,而不是閱讀:

var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5)); 
相關問題