C 中get和set訪問器

2021-04-12 18:41:20 字數 2337 閱讀 5127

屬性的訪問器包含與獲取(讀取或計算)或設定(寫)屬性有關的可執行語句。訪問器宣告可以包含 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

set }

public static void main() }

執行結果為:

aaa

dsf

120

也就是先把120賦值給value(相當乙個儲存空間),然後再用get{}返回給book,實際上也就是一次改變變數值的過程。

那你也許會問為什麼要這麼複雜呢?因為這是用了巢狀,所以可以更加方便的寫入其它語句,在以後你就應該學到了。

如果沒有:

obj.book = 120;

請想一想會是什麼結果呢?

只是乙個取值過程:get{}而沒有執行set{}

結果為:

dsf

0摘自:http://hi.baidu.com/pxy59/blog/item/ddb40f731e337d1c8601b026.html

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 在同時...

C 中get和set訪問器的解釋

soriq的部落格 屬性的訪問器包含與獲取 讀取或計算 或設定 寫 屬性有關的可執行語句。訪問器宣告可以包含 get 訪問器或 set 訪問器,或者兩者均包含。宣告採用下列形式之一 get set get 訪問器 get 訪問器體與方法體相似。它必須返回屬性型別的值。執行 get 訪問器相當於讀取欄...