標籤: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 }