以前在使用局部變量的時候,代碼規(guī)范規(guī)定必須用隱式類型,即var關(guān)鍵字,如
public int GetCount()
{
//int count = 0;
var count = 0;
}
之前只是覺得這樣可以省事很多,編譯器就幫助我們做好了類型推斷,也不會出錯,并且Visual Studio也會提示使用var,而不是直接使用int之類。
后來接觸的代碼還有同事的使用方式及建議,比較傾向于使用明確的類型,即顯式類型的聲明局部變量的方式。只是我還是比較傾向于使用var,以前留下來的習(xí)慣了。
《Effective C#》第一條建議是優(yōu)先使用隱式類型的局部變量,也更加讓我清晰了如何使用隱式類型的局部變量,即使用var聲明變量。對于根據(jù)函數(shù)簽名以及變量的聲明不能讓代碼的讀者容易推斷出變量的類型的時候,就應(yīng)該使用顯式類型局部變量,這樣可以使得代碼更適宜閱讀和維護。反之,如果這些都很清晰,那么直接使用隱式的即可,省時省事。而同時,有些情況下,使用隱式類型讓編譯器推斷出正確類型,會更好些。書中的例子是使用LINQ時,如果直接顯式返回IEnumerable<T>而不是IQueryable<T>性能上會差一些,IQueryable<T>對數(shù)據(jù)的查詢做了優(yōu)化,使用var來讓編譯器推斷類型,反而獲得了性能優(yōu)勢。
一種要避免使用var的情形是,數(shù)據(jù)的精度在隱式轉(zhuǎn)換中造成誤解和精度的損失,比如double轉(zhuǎn)float,long轉(zhuǎn)int等,此種類型盡量使用原始的顯示類型。
使用var需要注意其中的適用情形,不能濫用,但是改用則用,前提是上下文清晰,也要利于閱讀和維護。