關於C set和get的理解

2021-10-02 07:43:08 字數 1662 閱讀 6283

有兩個類person:

public class person

public string name;

public class person

public string name

第乙個型別的name屬性未封裝,其name屬性直接通過public關鍵字暴露給系統中的其他類了,而第二個型別的name屬性通過get set關鍵字進行了封裝,get和set分別對應的是可讀和可寫,相當於如下**:

private string name;

public string name

get

set

簡單說下區別吧:當例項化第乙個「person」這個類時,系統在分配記憶體空間時對name屬性直接分配記憶體,之後對name屬性的操作也是直接操作記憶體中name屬性所在的這個塊;而當例項化第二個「人」型別時,系統會先分配乙個叫name的private私有的記憶體空間(此處的name對於類的內部使用,name對於外部操作使用,要有所區分),之後的讀與寫的操作都是通過name這個public的類似於指標的東西來關聯name進行,以此達到封裝的目的,並且通過get和set關鍵字也可以控制可讀還是可寫。建議用後者,封裝的好處可以參考相關文件,不再累述了~

至於get和set的作用,除了控制讀寫之外還有其他的作用,舉個簡單的例子,比如說當我給name賦值的時候想要先進行一些邏輯判斷,就可以這樣:

private string name;

public string name

get

setname = string.isnullorempty(value) ? "空" : value;

再舉例說明下:

假設類是一銀行,既能存錢也能取錢

private money;

private class bank()

getreturn money;

setmoney=value;

money 就像銀行裡的自動取款機,你看不見裡面的money,但你能用set(存錢),用get(取錢)。money是乙個私有字段,是分裝在類中的,類以外的程式不能直接訪問的。c#中get、set用法中,類的set和get成員是外部程式訪問類內部屬性的唯一方法,就像你去銀行取錢,你不能直接從銀行的保險櫃裡拿錢,而是銀行營業人員把錢取出來給你的。

屬性在呼叫者看來就像乙個普通的變數,但作為類的設計者,你可以利用屬性來隱藏你類中的一些字段,使外界只能通過屬性來訪問你的字段,你可以通過屬性來限制外界對你的字段的訪問,就利用get、set。如果想讓使用者隨意訪問你的字段,那麼就實現get、set;如果只想讓使用者讀取字段,就只實現get;若只想讓使用者寫字段就只實現set。同時還可以在set和get中對使用者傳遞的值進行一些驗證工作,以確保你的字段將含有正確的值。

private int a;

public int index

getreturn a;

setif (value>0)

a=value;

else

a=0;

可看出,get、set用法中

一則是隱藏元件或類內部的真實成員;

二是用來建立約束的,比如,實現「有我沒你」這種約束;

三是用來響應屬性變化事件,當屬性變化是做某事,只要寫在set方法裡就行。

當你想讀出或寫入屬性的值時,訪問標誌限定了被實現的語句。用於讀出屬性的值的訪問標誌記為關鍵字get,而要修改屬性的值的讀寫符標誌記為set。

C set和get如何用

c 語言有兩個函式 乙個賦值函式 get 乙個取值函式 set 這從它生成的中間語言 可以清晰地看到。c 不提倡將域的保護級別設為public而使使用者在類外任意操作 那樣太不oo,或者具體點說太不安全!對所有有必要在類外可見的域,c 推薦採用屬性來表達。屬性不表示儲存位置,這是屬性和域的根本性的區...

C set和get如何用

c 語言有兩個函式 乙個賦值函式 get 乙個取值函式 set 這從它生成的中間語言 可以清晰地看到。c 不提倡將域的保護級別設為public而使使用者在類外任意操作 那樣太不oo,或者具體點說太不安全!對所有有必要在類外可見的域,c 推薦採用屬性來表達。屬性不表示儲存位置,這是屬性和域的根本性的區...

C set 和get 有什麼作用

c 中get和set,看來看去還是看不懂,通俗一點解釋一下,用了有什麼好處,不用會怎麼樣 如果你這樣寫是沒有什麼不一樣的.private int old public int old set 但是如果你這樣寫就不一樣了.private int old public int old set 上面的例子...