**
soriq的部落格
屬性的訪問器包含與獲取(讀取或計算)或設定(寫)屬性有關的可執行語句。訪問器宣告可以包含 get 訪問器或 set 訪問器,或者兩者均包含。宣告採用下列形式之一:
get {}
set {}
get 訪問器
get 訪問器體與方法體相似。它必須返回屬性型別的值。執行 get 訪問器相當於讀取欄位的值。以下是返回私有字段 name 的值的 get 訪問器:
private string name; // the name field
public string name // the name property
}當引用屬性時,除非該屬性為賦值目標,否則將呼叫 get 訪問器讀取該屬性的值。例如:
employee e1 = new employee();
...console.write(e1.name); // the get accessor is invoked here
get 訪問器必須在 return 或 throw 語句中終止,並且控制不能超出訪問器體。
set 訪問器
set 訪問器與返回 void 的方法類似。它使用稱為 value 的隱式引數,此引數的型別是屬性的型別。在下例中,set 訪問器被新增到 name 屬性:
public string name
set
}當對屬性賦值時,用提供新值的引數呼叫 set 訪問器。例如:
e1.name = "joe"; // the set accessor is invoked here
在 set 訪問器中對區域性變數宣告使用隱式引數名 (value) 是錯誤的。
備註屬性按如下方式,根據所使用的訪問器進行分類:
只帶有 get 訪問器的屬性稱為唯讀屬性。無法對唯讀屬性賦值。
只帶有 set 訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。
同時帶有 get 和 set 訪問器的屬性為讀寫屬性。
在屬性宣告中,get 和 set 訪問器都必須在屬性體的內部宣告。
使用 get 訪問器更改物件的狀態是一種錯誤的程式設計樣式。例如,以下訪問器在每次訪問 number 欄位時都產生更改物件狀態的***。
public int number
}可以將 get 訪問器用於返回字段值,或用於計算字段值並將其返回。例如:
public string name
}在上述**段中,如果不對 name 屬性賦值,它將返回值 na。
示例 1
此例說明如何訪問基類中被派生類中具有同一名稱的另乙個屬性隱藏的屬性。
// property_hiding.cs
// property hiding
using system;
public class baseclass
set }}
public class derivedclass : baseclass
set }}
public class mainclass
",d1.name);
((baseclass)d1).name = "mary"; // base class property
console.writeline("name in the base class is: ",
((baseclass)d1).name); }}
輸出name in the derived class is: john
name in the base class is: mary
以下是上例中顯示的重點:
派生類中的屬性 name 隱藏基類中的屬性 name。在這種情況下,派生類的該屬性宣告使用 new 修飾符:
public new string name
{...
轉換 (baseclass) 用於訪問基類中的隱藏屬性:
((baseclass)d1).name = "mary";
C 中get和set訪問器
屬性的訪問器包含與獲取 讀取或計算 或設定 寫 屬性有關的可執行語句。訪問器宣告可以包含 get 訪問器或 set 訪問器,或者兩者均包含。宣告採用下列形式之一 get set get 訪問器 get 訪問器體與方法體相似。它必須返回屬性型別的值。執行 get 訪問器相當於讀取欄位的值。以下是返回私...
C 中的GET和SET訪問器
我們在學習c 語法的屬性時,都要首先和get,set訪問器打交道,從英文的字面意思上理解,get應該就是獲得什麼什麼,而set應該是設定什麼什麼,那我們看一下,官方是怎麼定義這對訪問器的 get是讀取屬性時進行的操作,set是設定屬性時進行的操作。定義乙個屬性如果只有get,這個屬性就是唯讀的。同樣...
C 中的Get和Set訪問器
今天學習了c 中get set訪問器的用法 using system namespace lesson07 2 get public string name set 訪問器 set private int age 18 唯讀屬性,只有get public int age 只寫屬性,只有set 在同時...