C#:欄位與屬性

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   使用   

MSDN中是這麼介紹欄位和屬性的:

A field is a variable of any type that is declared directly in a class or struct.

欄位:“欄位”是直接在類或結構中聲明的任何類型的變數。

A property is a member that provides a flexible mechanism to read, write, or compute the value of a private field.Properties can be used as if they are public data members, but they are actually special methods called accessors.This enables data to be accessed easily and still helps promote the safety and flexibility of methods.

屬性是這樣的成員:它們提供靈活的機制來讀取、編寫或計算私人欄位的值。可以像使用公用資料成員一樣使用屬性,但實際上它們是稱為“訪問器”的特殊方法。這使得資料在可被輕鬆訪問的同時,仍能提供方法的安全性和靈活性。

欄位是變數,而屬性是方法。欄位一般是private的,而屬性一般是public的。外部代碼可以通過屬性來訪問欄位,實現對欄位的讀寫操作,所以屬性又稱訪問器。

屬性可以控制外部代碼對欄位的存取權限:通過只實現get訪問器,使欄位是唯讀;通過只實現set訪問器使欄位是唯寫的;同時實現get和set訪問器,則外部可對該欄位進行讀寫操作。

①屬性同時包含 get 和 set 訪問器,允許任何對象讀寫該屬性。相應的任何對象也可以對該屬性所對應的欄位進行讀寫操作。

 1     public class Person 2     { 3         //----------------------- 4         //可讀可寫 5         //----------------------- 6         private string name; 7         /// <summary>姓名</summary> 8         public string Name 9         {10             get;set;11         }12     } 

 ②屬性只包含get訪問器,省略set訪問器,則該屬性為唯讀。相應的外部代碼只能對該屬性所對應的欄位進行讀操作。

 1     public class Person 2     { 3         //----------------------- 4         //唯讀 5         //----------------------- 6         private string name; 7         /// <summary>姓名</summary> 8         public string Name 9         {10             get;11         }12     }

 ③屬性只包含set訪問器,省略get訪問器,則該屬性為唯寫的。相應的外部代碼只能對該屬性所對應的欄位進行寫操作。

 1     public class Person 2     { 3         //----------------------- 4         //唯寫 5         //----------------------- 6         private string name; 7         /// <summary>姓名</summary> 8         public string Name 9         {10             set;11         }12     }

 屬性可以對欄位的寫操作進行有效性驗證。

 1         //----------------------- 2         //有效性驗證 3         //----------------------- 4         private int age; 5         /// <summary>年齡</summary> 6         public int Age 7         { 8             get; 9             set {10                 if (value <= 0 || value >= 150)11                 {12                     throw new ArgumentOutOfRangeException("Age", "The range of age is between 1 and 150.");13                 }14             }15         }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.