C 中的靜態類和靜態成員

2022-05-14 10:24:58 字數 1226 閱讀 1827

靜態類是自c# 2.0才引入的,c# 1.0不支援靜態類宣告。

靜態類與非靜態類的重要區別在於靜態類不能例項化,也就是說,不能使用 new 關鍵字建立靜態類型別的變數。在宣告乙個類時使用static關鍵字,具有兩個方面的意義:首先,它防止程式設計師寫**來例項化該靜態類;其次,它防止在類的內部宣告任何例項欄位或方法。我們就靜態類的特點可以總結出:靜態類可以作為不與特定物件關聯的方法的組織單元,我們可以把一些工具方法放到一起,因為其和例項沒有關係,靜態類能夠使您的實現更簡單、迅速,因為您不必建立物件就能呼叫其方法。比如類庫中的math類;我們寫程式時一些常用的型別轉化類等等。即使沒有建立類的例項,也可以呼叫該類中的靜態方法、字段、屬性或事件。如果建立了該類的任何例項,不能使用例項來訪問靜態成員。只存在靜態欄位和事件的乙個副本,靜態方法和屬性只能訪問靜態欄位和靜態事件。在成員的返回型別之前使用static關鍵字來宣告靜態類成員,例如:

public class automobile

}public static void drive()

public static event eventtype runoutofgas;

//other non-static fields and properties...

}

靜態成員在第一次被訪問之前並且在任何靜態建構函式(如呼叫的話)之前初始化。若要訪問靜態類成員,應使用類名而不是變數名來指定該成員的位置。1:非靜態類可以包含靜態的方法、字段、屬性或事件;

2:無論對乙個類建立多少個例項,它的靜態成員都只有乙個副本;

3:靜態方法和屬性不能訪問其包含型別中的非靜態欄位和事件,並且不能訪問任何物件的例項變數;

4:靜態方法只能被過載,而不能被重寫,因為靜態方法不屬於類的例項成員;

5:雖然字段不能宣告為 static const,但const 欄位的行為在本質上是靜態的。這樣的字段屬於類, 不屬於類的例項。因此,可以同對待靜態字段一樣使用 classname.membername 表示法來訪問 const 字段;

6:c# 不支援靜態區域性變數(在方法內部定義靜態變數)。1:靜態類可以有靜態建構函式,靜態建構函式不可繼承;

2:靜態建構函式可以用於靜態類,也可用於非靜態類;

3:靜態建構函式無訪問修飾符、無引數,只有乙個 static 標誌;

4:靜態建構函式不可被直接呼叫,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動執行,並且 只執行一次。1:非靜態類在例項化後是在記憶體中是獨立的,它的變數不會重複,在使用後會及時銷毀,所以不會出現未知 的錯誤。

靜態類和靜態類成員(C )

靜態類與非靜態類基本相同,但存在乙個區別 靜態類不能例項化。也就是說,不能使用 new 關鍵字建立靜態類型別的變數。因為沒有例項變數,所以要使用類名本身訪問靜態類的成員。例如,如果名為 utilityclass 的靜態類有乙個名為 methoda 的公共方法,則按下面的示例所示呼叫該方法 c uti...

C 靜態類成員和靜態類成員函式

一 靜態類成員 include class stringbad 靜態類成員有乙個特點 無論建立多少物件,程式都只能建立乙個靜態變數副本。也就是說所有物件共享同乙個靜態成員,就像你家 可供全家家庭成員共享一樣。假設建立了10個stringbad物件,將有10個str成員和len成員,但是只共享乙個nu...

C 基礎 靜態成員和靜態類

靜態成員 1.靜態成員是被static關鍵字修飾的.是屬於類的.通過類名.靜態成員來訪問.2.例項成員 沒有被static關鍵字修飾的 是屬於物件的.通過物件名.例項成員來訪問.3.例項成員屬於物件.4.在這個類第一次被載入的時候,這個類下面的所有的靜態成員會被載入 5.靜態成員只被建立1次.所以靜...