在c#1.0,c#2.0中聲明一個變量時,老是要指定變量的類型,若是不指定變量類型編譯器就會報錯,產生編譯錯誤。在c#3.0中咱們能夠不指定變量的具體類型,而使用一個新的關鍵字"var"來指定變量的類型,該變量的實際類型將在其初始化表達式中推到出來。下面實例代碼中,咱們用var聲明瞭3個局部變量,並獲取他們的類型:c#
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Linq; 6 7 namespace LinqDemo 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 14 LingVar(); 15 } 16 17 private static void LingVar() 18 { 19 20 var numberid = 10086; 21 22 var name = "IT少年"; 23 24 var arrayCity = new string[] { "BeiJing", "ShangHai" }; 25 26 27 Console.WriteLine("--numberid的類型----"); 28 Console.WriteLine(numberid.GetType().ToString()); 29 30 Console.WriteLine("--name的類型----"); 31 Console.WriteLine(name.GetType().ToString()); 32 33 Console.WriteLine("--arrayCity的類型----"); 34 Console.WriteLine(arrayCity.GetType().ToString()); 35 36 Console.ReadKey(); 37 38 39 } 40 } 41 }
運行代碼能夠看到:數組
咱們從運行結果能夠看到,最終numberid被推斷出類型爲System.Int32,name被推斷出System.String,arrayCity推斷爲System.String[] 數組類型。徹底是正確的。spa
可是在var使用過程當中必須遵循3個原則:3d
一、var聲明的變量必須包含初始化器,初始化器必須爲一個表達式,且初始化器不能包含自身對象。code
var numberid = numberid + 1;//編譯錯誤對象
能夠看到上面的編譯錯誤很明顯。blog
二、var聲明的變量初始化值不能爲null。編譯器
三、var聲明變量時,不能在同一語句中初始化多個隱式類型的變量。string
看來var 關鍵字很方便,能夠簡化代碼,可是大量使用var聲明變量會使得代碼難以理解。所以咱們通常在Linq表達式中難以肯定變量的查詢結果的類型的時候使用var關鍵字是一個不錯的選擇。it