根據屬性的實現方式,屬性可分為自動實現的屬性和常規屬性。
常規屬性需要具體的人為的實現get訪問器或者set訪問器,而且一般需要有一個字段與之相對應;而自動實現的屬性的get和set訪問器的實現部分被省略掉了,而且代碼中不需要有相對應的字段。
常規屬性:
public class Person { //----------------------- //普通屬性 //----------------------- private string name; /// <summary>姓名</summary> public string Name { get { return this.name; } set { this.name = value; } } }
自動實現的屬性:
public class Person { //----------------------- //自動實現的屬性 //----------------------- /// <summary>姓名</summary> public string Name { get; set; } }
可以給自動實現的屬性的get訪問器或者set訪問器添加訪問權限修飾符(private,protected,internal),以控制該屬性的訪問權限。
(*注意給get或者set訪問器添加的訪問權限修飾符的訪問權限,必須比該屬性整體的訪問屬性的訪問權限要小)
通過給get或者set訪問器添加的訪問權限修飾符,實現只讀或者只寫:
public class Person { //----------------------- //自動實現的屬性實現只讀 //----------------------- /// <summary>姓名</summary> public string Name { get; private set; } }
public class Person { //----------------------- //自動實現的屬性實現只寫 //----------------------- /// <summary>姓名</summary> public string Name { private get; set; } }
自動實現的屬性有以下幾點需要注意:
①必須同時實現set訪問器和get訪問器,缺一不可;
②自動實現的屬性,編譯器在運行時會自動生成一個私有的字段,這個自動生成的字段不能夠直接訪問;
③當需要實現對數據的合法性驗證或者其它特殊處理的時候不能用自動實現的屬性。