1:隱式類型的本地變量和數組
2:對象初始值設定項
3:集合初始值設定項
4:自動實現屬性
5:匿名類型
6:擴展方法
7:分部方法定義
8:Lambda 表達式
關鍵字(var)
1:var可以用局部變量聲明不可以用於字段可以應用於for、foreach、using語句中
2:var關鍵字不能包含自身對象或者集合初始化器,但可以經過new的新表達式
例:var result;//編譯錯誤
var result=result+1;//編譯錯誤
var result={1,2,3};//編譯錯誤
3:var是推斷類型,不是顯示類型
4:var關鍵字指示編譯器根據初始化語句右側的表達式推斷變量的類型
5:推斷類型可以是內置類型、匿名類型、用戶定義類型、.NET Framework 類庫中定義的類型或任何表達式
注:var關鍵字並不意味著“變體”,也不表示該變量時松散類型化變量或後期綁定變量。它只是表示由編譯器確定和分配最適合的類型
var 使用的場景
1:局部變量
例:var i = 5;
2:在for初始化語句
例:for(var i = 1; i < 10; ++i)
3:在foreach初始化語句
例:foreach(var item in list)
4:在using語句
例:using(var file = new StreamReader("C:"))
一:隱式類型的本地變量和數組
注:隱形數組使用var關鍵字和數組初始化器創建。元素的數據類型必須能夠隱式轉換為同一數據類型,並且不能為空(null)
1:沒有在初始化語句的左側隱式類型的數組使用方括號
2:支持交錯數組,不支持多維數組
例:var a = new [] {1,2,3} //一維數組
var b = new []
{
new [] {1,2,3},
new [] {5,6}
}; //交錯數組
二:對象初始值設定項
注:對象初始化器由一系列成員對象組成,其對象必須初始化,用逗號間隔,使用{}封閉
1.NET 2.0寫法:
User userInfo = new User();
userInfo.ID = “zhuxing”;
userInfo.Name = “czx”;
userInfo.Age= 22;
2.NET 3.5寫法:
User userInfo = new User() {ID = “zhuxing”, Name = “czx”, Age=22};
注:嵌套復雜屬性類型
User userInfo = new User()
{
ID=“zhuxing”,
Name=“czx”,
Address =new Address()
{
Province=“
City=“ningde”
}
};
1:可以和構造函數一起使用,並且構造函數初始化先於對象初始化器執行
2:允許部分賦值
3:允許給internal 成員賦值