C# 編程指南
如何:聲明和使用讀/寫屬性(C# 編程指南) 屬性可以提供公用資料成員的便利,而又不會帶來不受保護、不受控制以及未經驗證訪問對象資料的風險。這是通過“訪問器”來實現的:訪問器是為基礎資料成員賦值和檢索其值的特殊方法。使用 set 訪問器可以為資料成員賦值,使用 get 訪問器可以檢索資料成員的值。此樣本示範 Person 類,該類具有兩個屬性:Name (string) 和 Age (int)。這兩個屬性都提供
get 和
set 訪問器,因此它們被視為讀/寫屬性。
樣本C#複製代碼class Person{ privatestring m_name = "N/A"; privateint m_Age = 0; // Declare a Name property of type string: publicstring Name { get { return m_name; } set { m_name = value; } } // Declare an Age property of type int: publicint Age { get { return m_Age; } set { m_Age = value; } } public override string ToString() { return"Name = " + Name + ", Age = " + Age; }} class TestPerson{ staticvoid Main() { // Create a new Person object: Person person = new Person(); // Print out the name and the age associated with the person: System.Console.WriteLine("Person details - {0}", person); // Set some values on the person object: person.Name = "Joe"; person.Age = 99; System.Console.WriteLine("Person details - {0}", person); // Increment the Age property: person.Age += 1; System.Console.WriteLine("Person details - {0}", person); }}
輸出Person details - Name = N/A, Age = 0Person details - Name = Joe, Age = 99Person details - Name = Joe, Age = 100
可靠編程在上面的樣本中,Name 和 Age 屬性是公用的,並且同時包含
get 和
set 訪問器。這允許任何對象讀寫這些屬性。不過,有時需要排除其中的一個訪問器。例如,省略
set 訪問器將使該屬性成為唯讀:C#複製代碼publicstring Name{ get { return m_name; }}此外,您還可以公開一個訪問器,而使另一個訪問器成為私人的或受保護的。有關更多資訊,請參見非對稱訪問器可訪問性。聲明了屬性後,可像使用類的欄位那樣使用這些屬性。這使得擷取和設定屬性值時都可以使用非常自然的文法,如以下語句中所示:C#複製代碼person.Name = "Joe";person.Age = 99;注意,屬性
set 方法中可以使用一個特殊的 value 變數。該變數包含使用者指定的值,例如:C#複製代碼m_name = value;請注意用於使 Person 對象上的 Age 屬性遞增的簡潔文法:C#複製代碼person.Age += 1;如果將單獨的
set 和
get 方法用於模型屬性,則等效代碼可能類似於:複製代碼person.SetAge(person.GetAge() + 1); 本樣本中重寫了
ToString 方法:C#複製代碼public override string ToString(){ return"Name = " + Name + ", Age = " + Age;}注意,程式中未顯式使用
ToString。預設情況下,它由
WriteLine 調用來調用。 (來源:msdn )