一、靜態類
靜態類與非靜態類的重要區別在於靜態類不能例項化,也就是說,不能使用 new 關鍵字建立靜態類型別的變數。在宣告乙個類時使用static關鍵字,具有兩個方面的意義:首先,它防止程式設計師寫**來例項化該靜態類;其次,它防止在類的內部宣告任何例項欄位或方法。
靜態類的主要特性:
1:僅包含靜態成員。
2:無法例項化。
3:靜態類的本質,是乙個抽象的密封類,所以不能被繼承,也不能被例項化。
4:不能包含例項建構函式。
5:如果乙個類下面的所有成員,都需要被共享,那麼可以把這個類定義為靜態類。
靜態類與私有建構函式區別
1、私有構造器方式仍然可以從類的內部對類進行例項化,而靜態類禁止從任何地方例項化類,其中包括從類自身內部。
2、使用私有構造器的類中,是允許有例項成員的,編譯器不允許靜態類有任何例項成員。
3、使用靜態類的優點在於,編譯器能夠執行檢查以確保不致偶然地新增例項成員,編譯器將保證不會建立此 類的例項。
4、c#編譯器會自動把它標記為sealed。這個關鍵字將類指定為不可擴充套件;換言之,不能從它派生出其他類。
二、靜態變數
1、通過static關鍵字修飾,是屬於類,例項成員屬於物件,在這個類第一次載入的時候,這個類下面的所有靜態成員會被載入。
2、靜態成員只被建立一次,所以靜態成員只有乙份,例項成員有多少個物件,就有多少份。
3、類載入的時候,所有的靜態成員就會被建立在「靜態儲存區」裡面,一旦建立直到程式退出,才會被**。
4、變數需要被共享的時候,方法需要被反覆呼叫的時候,就可以把這些成員定義為靜態成員。
5、在靜態方法中,不能直接呼叫例項成員,因為靜態方法被呼叫的時候,物件還有可能不存在。
6、this/base 關鍵字在靜態方法中不能使用,因為有可能物件還不存在。
7、可以建立這個類的物件,制定物件的成員在靜態方法中操作。
8、在例項方法中,可以呼叫靜態成員,因為這個時候靜態成員肯定存在。
9、非靜態類可以包含靜態的方法、字段、屬性或事件;
10、無論對乙個類建立多少個例項,它的靜態成員都只有乙個副本;
11、靜態方法和屬性不能訪問其包含型別中的非靜態欄位和事件,並且不能訪問任何物件的例項變數;
12、靜態方法只能被過載,而不能被重寫,因為靜態方法不屬於類的例項成員;
13、雖然字段不能宣告為 static const,但 const 欄位的行為在本質上是靜態的。這樣的字段屬於類,不屬於類的例項。
三、靜態方法
靜態方法是不屬於特定物件的方法,
靜態方法可以訪問靜態成員變數,
靜態方法不可以直接訪問例項變數,可以在例項函式呼叫的情況下,例項變 量做為引數傳給靜態方法。
靜態方法也不能直接呼叫例項方法,可以間接呼叫,首先要建立乙個類的例項,然後通過這一特定物件來呼叫靜態方法。
C語言 靜態變數static的用法
靜態全域性變數,作用於僅限於變數被定義的檔案。其他檔案即使用extern宣告也沒法使用,準確說就是作用域是從定義處開始,到檔案結束,在定義處之前的那些 不能使用它。靜態區域性變數,在函式裡定義,就只能在這個函式裡使用,同乙個文件中的其他函式也是用不了的。由於被static修飾的變數總是存在記憶體的 ...
C 中static靜態變數的用法
使用 static 修飾符宣告屬於型別本身而不是屬於特定物件的靜態成員static修飾符可用於類 字段 方法 屬性 運算子 事件和建構函式,但不能用於索引器 析構函式或類以外的型別 靜態全域性變數 定義 在全域性變數前,加上關鍵字 static 該變數就被定義成為了乙個靜態全域性變數。特點 a 該變...
靜態區域性變數 static 用法
有時希望函式中的區域性變數的值在函式呼叫結束後不消失而保留原值,即其占用的儲存單元不釋放,在下一次該函式呼叫時,該變數保留上一次函式呼叫結束時的值。這時就應該指定該區域性變數為靜態區域性變數 static local variable 例 靜態區域性變數的值。include using namesp...