3.var定義時,必須使用表達式初始化;
也就是必須定義成 var i=0; 沒有初始化編譯會報錯,而且初始化值不能為null,編譯器無法根據null來推斷出局部變量的類型;初始值除了int,string等數據類型外,還可以使用new 一個對象作為初始值(從網上大家發表的看法,var使用最多的就是配合一個匿名類型的對象來使用,以及在Linq中使用)
配合匿名類型使用:
var a = new { Name = "maotin", Age = 99 };
Console.WriteLine(a.Name);
Console.WriteLine(a.Age);
在linq中應用:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var queryLowNums =
from num in numbers
where num < 5
select num;
var expr = from c in cusomers where c.City == "beijing" select c;
foreach (var s in queryLowNums)
{
Console.Write(s.ToString() + " ");
}
4.var和匿名類型:
string[] Words = { "aPPLE", "biuEb", "cHeRry" };
var upperLowerWords =
from w in Words
select new { Upper = w.ToUpper(), Lower = w.ToLower() };
foreach (var word in upperLowerWords)
{
Console.WriteLine("Uppercase:{0},Lowercase:{1}", word.Upper, Word.Lower);
}
注:
很多時候var是可以省略的;
但是在使用匿名類型初始化變量時,必須使用它;
由於只有編譯器知道匿名類型的名稱,因此必須在源代碼中使用它;
如果已經使用了var初始化了查詢變量,則還必須使用var作為對查詢變量進行循環訪問的foreach語句中迭代變量的類型。
5.var使用建議
一般var不要像“var i=9;”這樣使用,程序可讀性不高;在匿名類型中使用比較方便;foreach中使用也不錯;var只是語言層面的東西,編譯器會在編譯的時候通過類型推斷把它換成真正的類型。