如何:聲明和使用讀/寫屬性(C# 編程指南)

來源:互聯網
上載者:User

 

C# 編程指南 如何:聲明和使用讀/寫屬性(C# 編程指南) 屬性可以提供公用資料成員的便利,而又不會帶來不受保護、不受控制以及未經驗證訪問對象資料的風險。這是通過“訪問器”來實現的:訪問器是為基礎資料成員賦值和檢索其值的特殊方法。使用 set 訪問器可以為資料成員賦值,使用 get 訪問器可以檢索資料成員的值。此樣本示範 Person 類,該類具有兩個屬性:Name (string) 和 Age (int)。這兩個屬性都提供 getset 訪問器,因此它們被視為讀/寫屬性。 樣本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 屬性是公用的,並且同時包含 getset 訪問器。這允許任何對象讀寫這些屬性。不過,有時需要排除其中的一個訪問器。例如,省略 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;如果將單獨的 setget 方法用於模型屬性,則等效代碼可能類似於:複製代碼person.SetAge(person.GetAge() + 1); 本樣本中重寫了 ToString 方法:C#複製代碼public override string ToString(){    return"Name = " + Name + ", Age = " + Age;}注意,程式中未顯式使用 ToString。預設情況下,它由 WriteLine 調用來調用。  (來源:msdn ) 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.