C#構(gòu)造函數(shù)和析構(gòu)函數(shù)描述
在向大家詳細(xì)介紹C#析構(gòu)函數(shù)之前,首先讓大家了解下C#構(gòu)造函數(shù),然后全面介紹C#析構(gòu)函數(shù)。
C#構(gòu)造函數(shù)(constructor)包括實(shí)例C#構(gòu)造函數(shù)和靜態(tài)C#構(gòu)造函數(shù)。C#構(gòu)造函數(shù)與類名相同,且不能有返回值。例:
- class TestClass
- {
- TestClass()
- //實(shí)例構(gòu)造函數(shù):可以訪問(wèn)靜態(tài)成員和實(shí)例成員,用于初始化實(shí)例成員
- {
- ...
- }
- static TestClass()
- //靜態(tài)構(gòu)造函數(shù):只能訪問(wèn)靜態(tài)成員,用于初始化靜態(tài)成員
- {
- ...
- }
- }
類的靜態(tài)成員屬于類所有,不必生成實(shí)例就可以訪問(wèn),它是在載入包含類的應(yīng)用程序時(shí)創(chuàng)建的,但靜態(tài)方法不能訪問(wèn)類的實(shí)例變量和方法。通常,靜態(tài)變量是在定義時(shí)就賦初始值的。
類的實(shí)例成員屬于類的實(shí)例所有,不創(chuàng)建實(shí)例對(duì)象就無(wú)法對(duì)其進(jìn)行訪問(wèn),實(shí)例成員可以訪問(wèn)類的靜態(tài)成員和其它實(shí)例成員。
- class A
- {
- public A()
- {
- ...
- }
- }
- class B
- {
- public B(): base()
- //調(diào)用基類的析構(gòu)函數(shù)
- {
- ...
- }
- }
常量:其值是在編譯時(shí)設(shè)定的,必須是數(shù)值文字。默認(rèn)狀態(tài)下常量是靜態(tài)的。例:
- class A
- {
- public const double pi = 3.1415;
- }
常量是編譯時(shí)就確定的值,只讀字段是在運(yùn)行才能確定的值。比如運(yùn)行時(shí)才能確定的屏幕分辨率。只讀字段只能在類的C#析構(gòu)函數(shù)中賦值。靜態(tài)只讀字段:
- class A
- {
- public static readonly int ScreenWidth;
- //靜態(tài)只讀字段
- static A() //靜態(tài)析構(gòu)函數(shù)
- {
- ScreenWidth = 1024;
- //在靜態(tài)析構(gòu)函數(shù)中初始化
- }
- }
在類的繼承中,類的C#析構(gòu)函數(shù)是不會(huì)被繼承的。一個(gè)派生類只能從一個(gè)基類繼承,不能同時(shí)從多個(gè)基類繼承,但可以通過(guò)繼承多個(gè)接口來(lái)達(dá)到相同目的。實(shí)現(xiàn)多繼承的***方法就是使用接口。例:
- class MyFancyGrid: Control, ISerializable, IDataBound
- {
- ...
- }
【編輯推薦】