- PEVR虛擬現實編輯平臺設計與實現精析
- 浙江優創信息技術有限公司
- 1453字
- 2024-08-01 15:58:36
2.2.2 類的成員
類的成員可以分為類本身所聲明的成員以及從基類中繼承而來的類的成員,有以下類型:
1)成員常量:代表與類相關聯的常量值。
2)域:即類中的變量。
3)成員方法:復雜執行類中的計算和其他操作。
4)屬性:用于定義類中的值并對它們進行讀寫。
5)事件:用于說明發生了什么事情。
6)索引指示器:允許像使用數組那樣為類添加路徑列表。
7)操作符:定義類中特有的操作。
8)構造函數和析構函數:分別用于對類的實例進行初始化和銷毀,包含可執行代碼的成員被認為是類中的函數成員,這些函數成員有方法屬性、索引指示器、構造函數和析構函數。
2.2.2.1 對類的成員的訪問
在編寫程序時,可以對類的成員使用不同的訪問修飾符,從而定義它們的訪問級別。
1.公有成員
C#中的公有成員提供了類的外部界面,允許類的使用者從外部進行訪問。公有成員的修飾符為public,這是限制最少的一種訪問方式。
2.私有成員
C#中的私有成員僅限于類中的成員可以訪問。從類的外部訪問私有成員是不合法的,如果在聲明中沒有出現成員的訪問修飾符,按照默認方式成員為私有的。私有成員的修飾符為private。
3.保護成員
為了方便派生類的訪問,又希望成員對于外界是隱藏的,這時可以使用protected修飾符聲明成員為保護成員。
4.內部成員
使用internal修飾符的類的成員是一種特殊的成員,這種成員對于同一包中的應用程序或庫是透明的,而在包.Net之外是禁止訪問的。
使用下面的例子說明一下類的成員的訪問修飾符的用法:
程序清單 2-6:


2.2.2.2 this保留字
保留字this僅限于在構造函數類的方法和類的實例中使用,它有以下含義:
1)在類的構造函數中出現的this:作為一個值類型,它表示對正在構造的對象本身的引用。
2)在類的方法中出現的this:作為一個值類型,它表示對調用該方法的對象的引用。
3)在結構的構造函數中出現的this:作為一個變量類型,它表示對正在構造的結構的引用。
4)在結構的方法中出現的this:作為一個變量類型,它表示對調用該方法的結構的引用,除此以外,在其他地方使用this保留字都是不合法的。
下面的代碼演示了如何使用this保留字:
程序清單 2-7:


程序運行的結果應該是

下面再舉一個例子來說明this的用法:
程序清單 2-8:

程序用于求某個整數是否為另一個整數的階乘,如果是,類Fact的方法GetFact返回該整數,否則GetFact返回-1。實際上在C#內部,this被定義為一個常量,因此使用this++、this--這樣的語句都是不合法的,但是this可以作為返回值來使用。我們知道在Windows操作系統中,當前窗口總是被加亮顯示,我們稱該窗口被激活。例如在Word中,我們可以同時打開多個文檔,每個文檔窗口作為Word主窗口的一個子窗口,其中只有一個子窗口是當前激活的窗口。如果Word沒有打開任何文檔,則主窗口作為當前激活的窗口。
下面的例子中,我們聲明了一個窗口類Window。假設類Window一次最多可以同時打開五個子窗口,Window的方法GetActiveWindow用于返回當前激活的窗口。如果打開了子窗口,則返回該子窗口的實例,否則返回主窗口本身。
程序清單 2-9:


2.2.2.3 靜態成員和非靜態成員
若將類中的某個成員聲明為static,該成員稱為靜態成員。類中的成員要么是靜態的要么是非靜態的,一般靜態成員是屬于類所有的,非靜態成員則屬于類的實例對象。
以下示例代碼演示了如何聲明靜態和非靜態成員:
程序清單 2-10:


類的非靜態成員屬于類的實例,每創建一個類的實例都在內存中為非靜態成員開辟了一塊區域;而類的靜態成員屬于類,為這個類的所有實例所共享,無論這個類創建了多少個副本,一個靜態成員在內存中只占有一塊區域。
2.2.2.4 成員常量
再看一個成員常量的聲明例子:

關鍵字const用于聲明后跟數據類型的常量,可以加上new、public、protected、internal、private修飾符。
可以用一條語句同時聲明多個常量,比如上例可以寫成:

- 性能測試從零開始
- ANSYS19.0實例詳解
- Photoshop CC 2018實用教程
- Excel 2013使用詳解(修訂版)
- Sencha Touch Cookbook, Second Edition
- 邊做邊學:Photoshop CS6 圖像制作案例教程
- Software Testing using Visual Studio 2010
- 圖像處理基礎教程(Photoshop CS5)(第2版)
- 人臉識別算法與案例分析
- 數字創意大師:Alias二維與三維概念設計工作流淺析
- AutoCAD 2020中文版入門、精通與實戰
- CakePHP Application Development
- 詳解AutoCAD 2022室內設計(第6版)
- Building Websites with XOOPS : A step/by/step tutorial
- 行攝 Photoshop CC后期修片高手之道(第2版)