標籤:
1、自動屬性
自動屬性是c#中屬性定義的兩種形式的一種:傳統屬性定義、自動屬性。
1.1 傳統屬性定義
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
1.2 自動屬性
public int Age{get;set;}//該句代碼的作用和上面傳統屬性定義的語句的作用是一樣的
1.3 兩種屬性定義形式的優缺點對比
1.3.1 傳統屬性定義形式
缺點:定義屬性的代碼多 文法不簡潔 繁瑣
優點:定義屬性的時候,可以帶一些邏輯判斷,這是自動屬性所不能做到的。
例如:
private int _age;
public int Age
{
get { return _age; }
set {
if((0<value)&&(value<200))
{
_age = value;
}
}
}
1.3.2 自動屬性定義形式
優點:定義文法簡介,高效、減少程式員書寫的代碼量
缺點:定義屬性的時候,不能做一些邏輯判斷。
2、屬性的作用
1、定義屬性可以保護類的私人欄位(封裝性)
2、簡化了對類的調用(定義屬性之後,要調用累得欄位_age,不需要再執行個體化類了)
3、隱式類型 var
3.1概述
定義變數的方式有兩種:傳統定義方式、定義成隱式類型。
傳統定義方式:資料類型+變數名(定義的時候可以初始化,也可以不初始化) int k=0;int k;
隱式類型定義方式:var+變數名(定義的時候必須初始化)var k=0;、
3.2 注意
(1).聲明的同時必須初始化,因為編譯時間要根據初始化實值型別來推斷var的類型;
(2).聲明後不能再修改資料類型,因為初始化的時候已經確定了var的類型了;
(3).只能作為方法局部變數使用。類的成員欄位、方法的形參和傳回值都不能使用!因為無法在編譯時間確定他們的類型!
(4).初始設定式不能是匿名函數和null。
(5)、隱式類型不是動態類型,編譯的時候,.net架構把var k=0;轉換成了int k=0;
c#4.5新文法--自動屬性和隱式類型