2010-10-19 84 views

回答

7

ReSharper Horizons blog

  1. 它誘導局部變量命名更好。當你用顯式類型讀取局部變量聲明時,當前有更多的信息在 ,類似於「IUnitTestElement current」的意思。 但是,稍後使用此局部變量時,您會看到「當前」 ,這需要一些時間才能找出含義。使用「var currentElement」可以更容易在任何地方閱讀。

  2. 它誘導更好的API。當你讓編譯器從方法返回類型或屬性類型中推導出類型時,你必須在 中有好的類型。如果 初始化表達式中沒有顯式類型,則必須爲成員指定最佳名稱。

  3. 它引發變量初始化。在聲明中初始化變量通常是一個好習慣,編譯器需要 初始值設定項來推斷用「var」 關鍵字聲明的局部變量的類型。

  4. 它消除了代碼噪聲。有很多情況下,當隱式類型化本地會減少文本開發人員需要閱讀的文本量,或者跳過。如果我們不使用「var」,則從新對象表達式或局部變量聲明局部變量需要指定兩次類型。使用泛型會導致很多其他冗餘代碼。 另一個例子是在 字典中的foreach中迭代變量。

  5. 它不需要使用指令。使用var,你沒有明確的類型引用,因爲編譯器爲你推斷輸入類型,所以當你需要一個臨時變量時,你不需要導入名字空間。

的缺點是潛在更少可讀代碼。例如 int myInt = 0;int myInt = 0; 對於大多數人來說比 var myInt = 0; 更直接,但這主要是由於我們多年來一直在尋找的語法。

4

var不是數據類型,它僅僅是「let-the-compiler-infer-at-compile-time-what-actual-type-to-use」的「語法糖」。

所以,你只需要瞭解以下類型推論:

var x = 4; //int 
var y = 4.0; //double 
var z = 4M; //decimal 
var w = (string)null; //string