推斷類型
var可以根據變量的初始值自動推斷局部變量的類型
-
var只能定影局部變量,而不能定義成員變量
-
定義的時候必須同時完成初始化,而不能使用var定義變量爲NULL
-
var本身並不是一種新的類型,只是用來修飾一個可推斷出具體類型的局部變量
var定義變量和object類型定義的區別
匿名類
什麼是匿名類
static void Main(string[] args)
{
var objPerson = new {
Name="小明",
Age=20,
ClassName="C#"
};
Console.WriteLine("有一個學生叫{0},班級是{1}",objPerson.Name,objPerson.ClassName);
Console.ReadLine();
}
特點:
-
直接使用var關鍵字聲明,並且使用new關鍵字創建對象
-
不需要提前編寫類的成員,並且只能添加對象的屬性
擴展方法
擴展方法定義
-
擴展方法必須在靜態類中定義
-
擴展方法是一種特殊的靜態方法
-
第一個參數前必須加關鍵字this,this後面的這個數據類型不是參數類型,這個類型代表這個方法是給哪個對象擴展的
-
參數的命名錶示當前變量
public static int Calc(this Student stu,int a,int b)
{
return a + b;
}
Student stu = new Student() { Name = "張三", Age = 20 };
Console.WriteLine("3+5="+ stu.Calc(3,5));
Console.ReadLine();
不帶參數的擴展方法
static 方法名 (this 目標類型 目標類型參數){}
帶參數的擴展方法
static 方法名(this 目標類型 目標類型參數 ,參數1,參數2){}
擴展方法注意
-
擴展方法必須定義在靜態類中,擴展方法本身也是靜態方法
-
如果擴展方法和對應的類位於不同的命名空間,使用時應引入擴展方法所在的靜態類的命名空間
-
當類本身的方法與擴展方法重名時,類本身的方法是被優先調用的
-
擴展方法不要過多使用
-
擴展方法也支持重載