屬性:get { //讀屬性代碼 } set { //寫屬性代碼 }
public class Person
{
private string name;
public string Name
{
get{return name;}
set{ name=value;}
}
}
屬性結(jié)合了字段和方法的多個方面。 對于對象的用戶急迂,屬性顯示為字段媒怯,訪問該屬性需要相同的語法骨宠。 對于類的實現(xiàn)者米罚,屬性是一個或兩個代碼塊钧汹,表示一個 get 訪問器和/或一個 set 訪問器。
當(dāng)讀取屬性時录择,執(zhí)行 get 訪問器的代碼塊拔莱;當(dāng)向?qū)傩苑峙湟粋€新值時,執(zhí)行 set 訪問器的代碼塊隘竭。
屬性可以忽略get或set訪問器辨宠,但是不能兩個都忽略.
不具有set訪問器的屬性被視為只讀屬性。
不具有 get訪問器的屬性被視為只寫屬性货裹。
屬性(property)
-充分體現(xiàn)了對象的封裝性:不直接操作類的數(shù)據(jù)內(nèi)容,而是通過訪問器進行訪問精偿,即借助于get和set對屬性的值進行讀寫弧圆;另一方面還可以對數(shù)據(jù)的訪問屬性進行控制(當(dāng)然也可以通過對普通域加readonly關(guān)鍵字來實現(xiàn)。
-設(shè)計原則:屬性封裝了對域的操作笔咽。把要訪問的域設(shè)為private搔预,通過屬性中的get和set操作對域進行設(shè)置或訪問。
-不能把屬性作為引用類型或輸出參數(shù)來進行傳遞叶组。
-get方法沒有參數(shù)拯田;set方法有一個隱含的參數(shù)value。除了使用了abstract修飾符的抽象屬性甩十,每個訪問器的執(zhí)行體中只有分號“船庇;”外吭产,其他的所有屬性的get訪問器都通過return來讀取屬性的值,set訪問器都通過value來設(shè)置屬性的值鸭轮。
-采用間接方式來訪問對象的屬性(間接調(diào)用get臣淤、set方法):對象.屬性 = 值(調(diào)用set),變量 = 對象.屬性(調(diào)用get)窃爷。
用途
1.它們可在允許更改前驗證數(shù)據(jù)邑蒋;
2.當(dāng)數(shù)據(jù)被更改時,它們可采取行動按厘,例如引發(fā)事件或更改其他字段的值医吊。
注意點
屬性可以只寫get塊或set塊。
如果只寫get不寫set逮京,那么就不能再外面賦值了卿堂。 如果只寫set不寫get,那么就不能在外界讀取了造虏。
可以給set或者get設(shè)置訪問修飾符御吞,來限制調(diào)用范圍。
//屬性的簡寫方式
public class Date
{
public int Month{get;set;} // 編譯器會自動加上一個month的字段漓藕。
}