c 物件初始化順序

2021-06-04 17:41:14 字數 619 閱讀 6639

c#

物件初始化

1.先變數後建構函式。變數先被初始化

,然後建構函式被執行 2.

先靜態化後例項化。當乙個類被訪問時

,靜態變數和建構函式最先被初始化

.接著是物件的例項化變數和建構函式被初始化 3.

先派生類後基類。對於變數和靜態建構函式

,派生物件在基物件之前被初始化.比如

c類派生自b類

,b類派生自a類

,那麼變數和靜態建構函式被初始化次序是

c-b-a. 4.

除了例項建構函式。對於例項建構函式

,基類建構函式在派生類建構函式之前執行

,例項建構函式被執行次序是

a-b-c. 5.

不要假定變數的次序。

fields

依據它們在原始檔中的宣告的順序依次初始化.然而

,自從程式設計師和工具可以隨意安排變數的宣告後

,你不應該在依靠變數任何特別的次序初始化 6.

對虛方法用兩個階段的構建。避免從乙個構造器呼叫虛方法

. 如果在初始化乙個物件時需要呼叫一些虛方法

,應在完整構造該物件的地方使用兩階段的構建,並隨後呼叫已構造物件的初始化方法。

C 物件的初始化順序

當構造乙個c 物件時,理解物件的字段和建構函式的順序是非常重要的 derived static fields 派生類靜態字段 derived static constructor 派生來靜態建構函式 derived instance fields 派生類例項字段 base static fields...

物件的初始化順序

由 static 關鍵字修飾的 如 類變數 靜態變數 靜態 塊 將在類被初始化建立例項物件之前被初始化,而且是按順序從上到下依次被執行 沒有 static 關鍵字修飾的 如 例項變數 非靜態變數 非靜態 塊 初始化實際上是會被提取到類的構造器中被執行的,但是會比類構造器中的 塊優先執行到,其也是按順...

物件的初始化順序

publicclass 初始化順序 static static public 初始化順序 publicstaticvoidmain string args 輸出結果為 靜態快1 靜態快2,非靜態快 1,非靜態快 2,構造方法 由上面這個類分析結果如下 1 乙個類中可以存在多個靜態塊與非靜態塊 2 多...