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