C#中 const static readonly

readonly:運行時常量,程序運行時賦值,賦值後沒法更改,通常稱爲只讀變量程序員

const:編譯時常量,在編譯時將該常量引用替換爲字面量,通常只能賦值爲數字,字符串,枚舉類型函數

static:靜態變量、靜態方法、靜態類this

靜態變量:對象

  特色:繼承

    一、經過static關鍵字修飾,是屬於類,實例成員屬於對象,在這個類第一次加載的時候,這個類下面的全部靜態成員會被加載。事件

    二、static與非static最大的區別就是static類型的變量及方法在調用的時候就在內存中分配了地址,且這個地址只有一份,故static能夠直接訪問。而非static必需手工去實例化該類,以對象的方式去訪問變量和方法。內存

    三、類加載的時候,全部的靜態成員就會被建立在「靜態存儲區」裏面,一旦建立直到程序退出,纔會被回收字符串

    四、變量須要被共享的時候,方法須要被反覆調用的時候,就能夠把這些成員定義爲靜態成員編譯

    五、在靜態方法中,不能直接調用實例成員,由於靜態方法被調用的時候,對象還有可能不存在。this代表對象自己,而在靜態方法中並無對象概念存在,它只有類自己這個概念,它和對象是屬於兩種互拆的狀態,即我中無你,你中無個人狀況。也就是說你用對象名.靜態變量或對象名.靜態方法是不可訪問的。變量

    六、能夠建立這個類的對象,制定對象的成員在靜態方法中操做

    七、在實例方法中,能夠調用靜態成員,由於這個時候靜態成員確定存在

    八、非靜態類能夠包含靜態的方法、字段、屬性或事件

    九、不管對一個類建立多少個實例,它的靜態成員都只有一個副本

    十、靜態方法和屬性不能訪問其包含類型中的非靜態字段和事件,而且不能訪問任何對象的實例變量

    十一、靜態方法只能被重載,而不能被重寫,由於靜態方法不屬於類的實例成員

    十二、雖然字段不能聲明爲 static const,但 const 字段的行爲在本質上是靜態的。這樣的字段屬於類,不屬於類的實例

靜態方法:

    一、靜態方法是不屬於特定對象的方法;

    二、靜態方法能夠訪問靜態成員變量;

    三、靜態方法不能夠直接訪問實例變量,能夠在實例函數調用的狀況下,實例變量作爲參數傳給靜態方法;

    四、靜態方法也不能直接調用實例方法,能夠間接調用,首先要建立一個類的實例,而後經過這一特定對象來調用靜態方法。

靜態類:

  靜態類不能實例化。在聲明一個類時使用static關鍵字,具備兩個方面的意義:首先,它防止程序員寫代碼來實例化該靜態類;其次,它防止在類的內部聲明任何實例字段或方法。C#自動把靜態類聲明爲sealed密封類。

  特色:

    一、僅包含靜態成員

    二、沒法實例化

    三、類的本質,是一個抽象的密封類,因此不能被繼承,也不能被實例化

    四、不能包含實例構造函數

    五、若是一個類下面的全部成員,都須要被共享,那麼能夠把這個類定義爲靜態類

相關文章
相關標籤/搜索