C 中Get和Set的用法

2021-10-07 16:57:16 字數 1614 閱讀 8545

**

首先搞清楚get和set有什麼用,在物件導向程式設計裡面,有的類的資料是私有的,是封裝起來的,所以為了讀取寫入對應的私有資料,c#採用了關鍵字get和set,其中get負責讀取私有資料set負責寫入私有資料,但這兩種用法應該並不絕對,我見過在get裡面進行寫入操作的。

我們在學習c#語法的屬性時,都要首先和get,set訪問器打交道,從英文的字面意思上理解,get應該就是獲得什麼什麼,而set應該是設定什麼什麼,那我們看一下,官方是怎麼定義這對訪問器的:get是讀取屬性時進行的操作,set是設定屬性時進行的操作。定義乙個屬性如果只有get,這個屬性就是唯讀的。同樣,只有set,屬性就是只寫的,當然只寫的屬性我覺的意義不是很大。

接下來我們通過一些**例項來接觸一下get和set訪問器

class

bank

//set訪問器,將我們打入的值賦給私有變數money

set}

}

我們可以打個生動的比方:

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

那我們設定了money屬性,怎麼使用呢??

class

program

}

細心的朋友可以發現當我們設定斷點在set訪問的中,執行** bank.money = 15;時,就會進入我們屬性中的set訪問器了。

以上就是我們的set和get訪問器的最基本的應用了。

但是我們為什麼要用get和set訪問器呢??

通過get和set對公有變數money進行讀寫操作,實際就是間接更改money私有變數的值,那既然如此。為何不設money為public,讓例項直接對money進行讀寫操作呢?我們是不是在多此一舉呢?

其實,我當初剛接觸get和set就很理解,並不是說他們的含義難理解,而是為什麼要用?為何不直接用個public的字段變數來代替呢?

理解一:用了get和set能讓賦值和取值增加限制

class

bank

//set訪問器,將我們打入的值賦給私有變數money,並且加了限制,不能存負的

setelse}}

}

這樣的話,我們是永遠無法給money屬性賦值負的金錢了!

其實這種應用才我們的實際的專案中,屬性設定中非常常見!例:

public }

setthis

value;}

}public

string billname

setelseif(

value

.length >40)

else

}}

如果在set訪問器中設定這個屬性的一些特性,比如說不能為空,長度大小,必須為數字,各類正規表示式等等,然後丟擲異常,表示層再來接受,這樣就可以少寫很多驗證程式了。

c 中get和set的用法

東郭西強 c 中get和set c 中get和set 在程式中經常碰到get set,不甚明白,在網上查詢時也說的迷迷糊糊,所以整理下,以學的明白透徹點。有兩個類person public class person public class person 第乙個型別的name屬性未封裝,其name屬...

c 中 get與set的用法

1 當引用屬性時,除非該屬性為賦值目標,否則將呼叫get訪問器讀取該屬性的值。例如 employeee1 newemployee console.write e1.name thegetaccessorisinvokedhereget 訪問器必須在return或throw語句中終止,並且控制不能超出...

js中set和get的用法

get 語句作為函式繫結在物件的屬性上,當訪問該屬性時呼叫該函式。set 語法可以將乙個函式繫結在當前物件的指定屬性上,當那個屬性被賦值時,你所繫結的函式就會被呼叫。eg var log test var obj console.log obj.latest will return test var...