C屬性定義。GET與SET訪問器是怎麼一回事

2022-02-27 23:03:10 字數 5522 閱讀 1163

1樓:她是我的小太陽

1.屬性的宣告

總的來說,只要注意屬性宣告或者在使用是的一些規定就可以了,還有最為重要的:屬性的操作過程。

宣告是用如下語法:

型別 屬性名

注意:屬性還可以跟方法一樣有引數,當然限制的是,引數必須是值引數外,引數的列表的宣告與方法的一樣。

訪問器包括包含get訪問器和set訪問器

2.get訪問器

get訪問器相當於一個無引數方法,該方法具有屬性型別的返回值以及屬性相同的修飾符,而執行get訪問器就是相當於讀取了欄位的值。需要注意的是,在get訪問器中,返回值作為屬性值提供給呼叫表示式。

例如:private int a ;

public int a

}注意:當引用屬性時,除非該屬性為賦值目標,否則將呼叫get訪問器讀取該屬性的值。(在沒看到上面這句話之前,也很疑惑,呼叫時怎麼讓物件知道是get呢,還是set呢?)

3.set訪問器

set訪問器相當於一個void方法,該方法具有單個屬性型別的值引數,以及包含屬性相同的修飾符。

在set訪問器中,新的屬性值通過set訪問器的引數傳遞。值得注意的是,在通過新的屬性值賦值給欄位時,顯示引數傳遞必須宣告為與該屬性相同的資料型別,當然也可以使用隱式引數,不加宣告時,編譯器將使用隱式引數value來表示賦給屬性的新值。set訪問器隱式具有名為value的引數(value),此引數的型別是屬性的型別。

例如:private int a ;

public int a }

屬性按如下方式,根據所使用的訪問器進行分類:

只帶有get訪問器的屬性稱為只讀屬性。無法對只讀屬性賦值。

只帶有set訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。

同時帶有get和set訪問器的屬性為讀寫屬性!

注意:在屬性宣告時,get和set訪問器都必須在屬性體內部宣告。

4.呼叫get訪問器在概念上等效於讀取欄位的值。但是並不是單單被編寫成只有返回儲存在欄位中的值,事實上可以通過訪問多個欄位的值來計算出使用者所需要的值,然後作為返回值,返**用的表示式。

例如:private int a ;

private int b ;

public int aaa}

2樓:匿名使用者

你可以把它當做是一種方法

比如private int num = 3;

public int num

set}

當我們例項化這個物件時,如果對obj.num賦值的話,會執行set裡面的程式,如果取得它的值的話,比如int x= obj.num 會執行 get裡面的語句

3樓:

我也是初學者。我用笨方法來理解的,你不要笑話。

我認為,set和get都是c#語言約定俗成的東西,是兩個方法。兩個什麼樣的方法呢?在賦值的時候,呼叫屬性的set方法;在讀取的時候,呼叫屬性的get方法。這樣。

正常變數是用自己的記憶體空間存取值,而屬性只是將"存取"抽象化為方法,並沒有實際的存取空間。

這有點像**上的二道販子。實際上他沒有自己的貨架和庫存,只是低價買進再**賣出(跑題了)

初學者的笨理解,不要笑話啊。呵呵

4樓:

避免了對欄位的直接訪問,可以在賦值時先進行判斷,增加了安全性;我是這樣理解的餓

c#中的get和set訪問器怎麼理解和使用?

5樓:匿名使用者

假設型別為t

private t _mypropertypublic t myproperty

set}

編譯最終生產方法

t get_myproperty()

void set_myproperty(t value)在外部使用時例如:

myproperty = new t();

呼叫set_myproperty方法將new t()傳入;

t x = myproperty;

呼叫get_myproperty()來返回結果

6樓:愛刷_棍哥

get和set是c#類中屬性的封裝將它隱藏public string flagget}定義一個變數flag,再定義一個公共成員變數flag(可以再別的類中對flag進行賦值,如obj.flag="aa"),set{}將「aa」賦給value,再將value賦給變數flag,flag=「aa「,再用get{}返回給flag;

而且可以對變數進行處理.增加安全性

get set 那就是在{}外面一個提取 a的直 一個是給a 賦值

get set 使用方法

string a;//成員變數

public string fuzhi//設定值 value是自動接受資料的

屬性中如果只有set,則是隻寫屬性;

如果既有get又有set則是可寫屬性;

且get和set分別可以用不同的修飾符。

修飾符分別代表的含義:

private:私有類內部可訪問;

public:全域性;

internal:程式集內部可訪問;

protected:受保護成員在它的類中可訪問並且可由派生類訪問。

c#中的get和set訪問器怎麼理解和使用?

7樓:火舞蝶衣

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

8樓:匿名使用者

c#為了提高安全性, 推薦將私有變數進行封裝, 外界通過屬性來訪問私有成員變數, 他提供了兩個訪問其

get訪問其是獲取成員變數裡的值, set訪問其是存入值

9樓:匿名使用者

假設型別為t

private t _mypropertypublic t myproperty

set}

編譯最終生產方法

t get_myproperty()

void set_myproperty(t value)在外部使用時例如:

myproperty = new t();

呼叫set_myproperty方法將new t()傳入;

t x = myproperty;

呼叫get_myproperty()來返回結果

c#中的get和set訪問器怎麼理解和使用?求解答

10樓:俎瑰瑋

c#為了提高安全性, 推薦將私有變數進行封裝, 外界通過屬性來訪問私有成員變數, 他提供了兩個訪問其

get訪問其是獲取成員變數裡的值, set訪問其是存入值

11樓:陡變吧

get和set是一種特定的方法,get用來從物件中讀取資料,而set用來向欄位寫入資料, 將外界的資料寫入欄位時,c#使用value表示輸入的資料。 屬性的讀寫控制 屬性中的get和set可以只用一個,如果只有get而沒有set,那麼這個屬性只可讀出,不可寫入; 如果只有set而沒有get,那麼這個屬性是隻寫入,不可讀出。 設計欄位是為了便於內部方法使用,而儘量與外界隔絕; 設計屬性考慮的是方便外界的使用,但是不讓外界知道的資料一律不給。]

c中string的定義方式,C 中如何定義string陣列?

例如 string a new string 2,2 要寫出二維陣列中橫座標的個數和縱座標的個數,這裡是 2,2 string aa new string 2,3 賦值 也可以這樣寫 aa 0,0 値 for int i 0 i aa.rank i 取值 for int i 0 i string e...

c結構體陣列的定義賦值與使用,C中如何定義一個結構體陣列,怎麼賦值使用

你應該是少傳了一個頁數的引數,比如頁數為1時查詢資料庫1 10條資料,為2時查詢11 20條資料 定義 一個類,比較好 c 中如何定義一個結構體陣列,怎麼賦值使用 public struct gnss gnss gnss new gnss 24 gnss 0 lon sss 在你原有的結構體裡面加上...

C 類與函式的定義問題

一 thitinfo int nodeid,double hittime 值傳遞 引用傳遞 常量引用傳遞 預設常量引用傳遞 二 加const的意思是不改變形參的值,呼叫時,實參可以是const,也可以是非const...