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;