C 的類成員初始化順序

2022-07-22 08:57:08 字數 1033 閱讀 4004

c#的類成員的定義和宣告如下

using unityengine;

using system.collections;

public class testcontroller : eccontroller

static int d=100;

static int b()

int c=9;

private testcontroller()

static testcontroller()

static int f=100;

static void main()

debug.log("~~~main~~");

testcontroller t = testcontroller.instance;

debug.log("~~~~~main~2~~"+testcontroller.f); }

}

輸出的結果:

~~~~~~~gg~~~~

~~~~~~~b~~~~~~~

~~~testcontroller~test~~~~~~~12   9  d  0

~~static~testcontroller~test~~~~~~~9  d  100  f 100

~~~main~~
~~~main~2~~100
說明總結:

當c#的類被確定可能會例項化時, 類的建構函式才被呼叫:

即c#會先預先執行一次,但不初始化非靜態或常態變數,此時,如果該類可能被執行時,

該類就會被例項化,此時所有操作都是在main函式開始之前!

當該類例項化時 首先是 

instance之前的靜態成員按照順序依據賦值初始化

然後是所有的非靜態成員初始化

最後是instance之後的靜態成員依據賦值初始化

最最後 開始執行,即執行main()

如果把main中的if(flag) 換為 if(false)

那麼該類將不會被例項化 

C 類內成員初始化順序

是類所有的物件的共享的成員,而不是某個物件的成員。它在物件中不占用儲存空間,這個屬性為整個類所共有,不屬於任何乙個具體物件。所以靜態成員不能在類的內部初始化,比如宣告乙個學生類,其中乙個成員為學生總數,則這個變數就應當宣告為靜態變數,應該根據實際需求來設定成員變數。1.成員變數在使用初始化列表初始化...

Java類成員初始化順序

首先看下這段測試 public class classloader 1.第二步,靜態變數和靜態 塊的載入順序由編寫先後決定 static int snum 4 2.第三步,靜態塊,然後執行靜態 塊,因為有輸出,故列印 static 4.第五步,按照順序載入匿名 塊,塊中有列印 5.第六步,按照順序載...

java類成員初始化順序

乙個類中,最首先被初始化的是靜態成員。只要乙個類建立物件或呼叫該類的靜態方法時靜態成員就都會被初始化,並且靜態資料在記憶體中只占用乙份儲存區域,無論建立多少個物件,靜態資料被所有物件共享。初始化靜態成員後再初始化非靜態成員。屬性 方法 構造方法和自由塊都是類的成員,在建立類物件時,類中各執行順序 b...