在.NET 3.0后微軟引入了隱式類型var,編譯器可以自動判斷變量的類型,通過var這個隱式類型,可以提高開發人員的開發效率,很多時候可以不考慮對象的類型,編譯器會自動幫我們判斷
使用隱式類型和使用其他顯式類型的效果是一樣的,只是在編譯的過程IDE自動判斷類型,所以很多時候我們不用考慮變量的具體類型
class Program { static void Main(string[] args) { var str = "aaa"; var i = 15; var obj = new { Name = "10", Age = 15 }; str.ToString(); i.ToString(); } }
編譯完,IDE會自動的把var換成string,int,而第三個,在編譯的時候會自動生成一個匿名的類,obj是一個類的對象,可以通過Reflector反編譯工具查看到
在使用隱式類型var的時候,需要遵循幾個規則
1)var類型的值必須是局部變量或靜態變量
2)var變量在聲明之前必須被初始化
3)變量的值不能為null(這樣編譯器就不能判斷類型了)
4)var變量不能為一個方法或方法組
5)不能用來聲明參數類型
class Program { int num = 15; static void Main(string[] args) { string str; //不能使用為初始化的變量 //var s = str; //不能引用字段,只能是局部變量或靜態變量 //var n = num; //var變量值不能為null //var s = null; //不能用函數返回值賦值 //var s = Add(10, 15); } //不能用作方法參數類型 //public int Add(var a, var b) public int Add(int a, int b) { return a + b; } }