get、set、value
get :在屬性或索引器中定義“訪問器”方法,以檢索該屬性或該索引器元素的值。
set :在屬性或索引器中的“訪問器”方法,用於設置屬性或索引器元素的值。
value: 隱式參數,用於設置訪問器以及添加或移除事件處理程序。
c#通過屬性特性讀取和寫入字段,而不直接讀取和寫入,以此來提供對類中字段的保護.
只帶有 get 訪問器的屬性稱爲只讀屬性。無法對只讀屬性賦值。
只帶有 set 訪問器的屬性稱爲只寫屬性。只寫屬性除作爲賦值的目標外,無法對其進行引用。
// 簡單示例
class Employee
{
private string _name;
public string Name
{
get { return this._name; }
set { this._name = value; }
}
}
注意:
- get、set“訪問器”,在默認情況下具有相同的訪問級別。但是有時鑑於對讀寫的考慮,通常可以限制set的訪問級別。對屬性或索引器使用訪問修飾符受以下條件的制約:
-
不能對接口或顯式接口成員實現使用訪問器修飾符。
-
僅當屬性或索引器同時具有 set 和 get 訪問器時,才能使用訪問器修飾符。這種情況下,只允許對其中一個訪問器使用修飾符。
-
如果屬性或索引器具有 override 修飾符,則訪問器修飾符必須與重寫的訪問器的訪問器(如果有的話)匹配。
-
訪問器的可訪問性級別必須比屬性或索引器本身的可訪問性級別具有更嚴格的限制。
-
屬性vs.函數
l 相似點
Ø 都包含執行代碼
Ø 都可以有訪問修飾符
Ø 都可以有virtual, abstract, override 修飾符
Ø 都可以用在接口中
l 不同點
Ø 屬性只能擁有get/set 語句
Ø 屬性不可以是void 型
Ø 屬性不能使用參數
Ø 屬性不能使用[ ] 參數
Ø 屬性不能使用括號