在物件導向程式設計(oop)中,是不允許外界直接對類的成員變數直接訪問的,既然不能訪問,那定義這些成員變數還有什麼意義呢?所以c#中就要用set和get方法來訪問私有成員變數,它們相當於外界訪問物件的乙個通道,乙個「介面」。先來看一段**:
class employee
set
}public byte age
set }}
**中定義了兩個私有變數name和age,當我們不想讓外界隨意訪問該私有變數時,可以使用屬性來訪問,語法為:
public 《返回型別(要與被訪問變數的型別相同)> 《屬性名(不能與被訪問變數同名)>
set}
當我們使用屬性來訪問私有成員變數時就會呼叫裡面的get方法,當我們要修改該變數時就會呼叫set方法,當然在定義的時候可以只定義乙個get方法或只定義乙個set方法。如果只定義get方法,那麼這個相應變數就是「唯讀」的;如果只定義set方法,那麼相應變數就是「只寫」的。
既然外界可以通過set和get訪問類內私有成員,那為什麼不直接把它定義成共有,直接供外界訪問呢?拿上面的employee類來說明:
class employee
set
}//修改後↓↓↓↓↓↓↓↓
public byte age
set}
//修改後↑↑↑↑↑↑↑↑
}上例中,set就像一位門衛大叔一樣,只有好人才能進來。可以通過屬性來控制對員變數的讀寫,防止對成員變數的非法賦值等。
再舉個小例子,以下是個溫度計的類:
class thermometer
public double temperature
set }}
假設這裡的溫度單位表示的是攝氏度(℃),如果在需求分析階段誤解了客戶的原始意願或者客戶在日後變更了需求,需要把系統中所有表示溫度的變數temperature都用來表示開爾文溫度(k)。那麼不必動系統中成百上千個temperature屬性,只需在get和set函式中稍微修改一下**即可:
class thermometer
public double temperature
set
//修改後↑↑↑↑↑↑↑↑}}
建乙個控制台應用程式來測試一下,主函式為:
class test
}
C 的set 和 get 方法
在程式中經常碰到get set,不甚明白,在網上查詢時也說的迷迷糊糊,所以整理下,以學的明白透徹點。有兩個類person public class person public class person 第乙個型別的name屬性未封裝,其name屬性直接通過public關鍵字暴露給系統中的其他類了 而...
C 的get和set方法
class getandset public int age set public getandset get與 set方法示例,仔細觀察,類的成員變數 string name 和int age 都沒有訪問控制修飾符,在類中,沒有訪問修飾符修飾的成員變數預設都是 private 的,所以可以使用 g...
關於C 中get和set
在程式中經常碰到get set,不甚明白,在網上查詢時也說的迷迷糊糊,所以整理下,以學的明白透徹點。有兩個類person public class person public class person 第乙個型別的name屬性未封裝,其name屬性直接通過public關鍵字暴露給系統中的其他類了,而...