靜態(tài)類在定義的時候是直接從System.Object類派生的,因此調(diào)用類的接口將沒有任何意義。又由于將類定義成static后會在IL中同時標(biāo)記為abstract和sealed的,因此不能實例化。
在托管堆中不會分配連續(xù)的物理內(nèi)存地址,因此也不會對其進行垃圾回收。但它又不同于值類型(struct類型),因為它還是從Object類派生的,因此可以給它定義相應(yīng)的靜態(tài)成員(字段,方法,屬性和事件)。
可以這么說靜態(tài)類是C#中一個比較特殊的類型。在使用的時候盡量將程序使用頻繁的方法寫進去,從而提高程序的性能。因為內(nèi)存的讀取速度將是外存無法比擬的。
靜態(tài)變量
可以將靜態(tài)變量理解為類變量(與對象無關(guān)),而實例變量則屬于一個特定的對象。
靜態(tài)變量有兩種情況:
靜態(tài)變量是基本數(shù)據(jù)類型,這種情況下在類的外部不必創(chuàng)建該類的實例就可以直接使用
靜態(tài)變量是一個引用。這種情況比較特殊,主要問題是由于靜態(tài)變量是一個對象的引用,那么必須初始化這個對象之后才能將引用指向它。因此如果要把一個引用定義成static的,就必須在定義的時候就對其對象進行初始化。
靜態(tài)方法
與類變量不同,方法(靜態(tài)方法與實例方法)在內(nèi)存中只有一份,無論該類有多少個實例,都共用一個方法。
靜態(tài)方法與實例方法的不同主要有:
靜態(tài)方法可以直接使用,而實例方法必須在類實例化之后通過對象來調(diào)用。
在外部調(diào)用靜態(tài)方法時,可以使用“類名.方法名”或者“對象名.方法名”的形式。實例方法只能使用后面這種方式。
靜態(tài)方法只允許訪問靜態(tài)成員。而實例方法中可以訪問靜態(tài)成員和實例成員。
靜態(tài)方法中不能使用this(因為this是與實例相關(guān)的)。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:3.388秒