C#中的set和get方法
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在面向?qū)ο缶幊蹋∣OP)中,是不允許外界直接對類的成員變量直接訪問的,既然不能訪問,那定義這些成員變量還有什么意義呢?所以C#中就要用set和get方法來訪問私有成員變量,它們相當(dāng)于外界訪問對象的一個通道,一個“接口”。先來看一段代碼: class Employee 代碼中定義了兩個私有變量name和age,當(dāng)我們不想讓外界隨意訪問該私有變量時,可以使用屬性來訪問,語法為: public <返回類型(要與被訪問變量的類型相同)> <屬性名(不能與被訪問變量同名)> 當(dāng)我們使用屬性來訪問私有成員變量時就會調(diào)用里面的get方法,當(dāng)我們要修改該變量時就會調(diào)用set方法,當(dāng)然在定義的時候可以只定義一個get方法或只定義一個set方法。如果只定義get方法,那么這個相應(yīng)變量就是“只讀”的;如果只定義set方法,那么相應(yīng)變量就是“只寫”的。 既然外界可以通過set和get訪問類內(nèi)私有成員,那為什么不直接把它定義成共有,直接供外界訪問呢?拿上面的Employee類來說明: class Employee 上例中,set就像一位門衛(wèi)大叔一樣,只有好人才能進(jìn)來??梢酝ㄟ^屬性來控制對員變量的讀寫,防止對成員變量的非法賦值等。 再舉個小例子,以下是個溫度計的類: class Thermometer 假設(shè)這里的溫度單位表示的是攝氏度(℃),如果在需求分析階段誤解了客戶的原始意愿或者客戶在日后變更了需求,需要把系統(tǒng)中所有表示溫度的變量temperature都用來表示開爾文溫度(K)。那么不必動系統(tǒng)中成百上千個Temperature屬性,只需在get和set函數(shù)中稍微修改一下代碼即可: class Thermometer 建一個控制臺應(yīng)用程序來測試一下,主函數(shù)為: class Test 上面代碼中用構(gòu)造函數(shù)給溫度設(shè)的初值為40度,代碼修改前運行結(jié)果為“40”,代碼修改后運行結(jié)果為“-233.15”。 該文章在 2021/1/30 8:40:21 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |