1:using system;
2:using system.collections.generic;
3:using system.linq;
4:using system.text;
5:
6:namespace 例項構造器
13:
14:public string b = "bjq";
15:
16:public a()
19:
20:static void main(string args)
24:*/
25:
26:class program
35:static program()
40: }
41:
42:class a
48: }
49:
50:class b //注意這裡改為了靜態的建構函式
53: }
54: }
還有一段**,也是說明這個使用的:
關鍵是靜態字段以及改變順序的this和base,注意有引數和沒有引數時候的構造函式呼叫,基本沒有問題啦
using system;
class base
privatestatic component basestaticfield = new component("基類靜態欄位被例項化。");
private component baseinstancefield = new component("基類例項成員欄位被例項化。");
public base()
}
//此型別用作派生類,同基類一樣,它也包含靜態建構函式,以及靜態字段、例項成員欄位各乙個。
class derived : base
privatestatic component derivedstaticfield = new component("派生類靜態欄位被例項化。");
private component derivedinstancefield = new component("派生類例項成員欄位被例項化。");
public derived()
}
//此型別用於作為base類和derived類的成員
//此型別在例項化的時候可以在控制台輸出自定義資訊,以給出相關提示
class component
}
//在主程式裡例項化了乙個子類物件
class program
}
總的原則,也就是根據記憶體的布局,clr載入方法的過程確定的,基本知道物件的建立過程就是沒有問題了~
大體的順序:
靜態字段
靜態建構函式(值型別不一定執行~)
例項字段
例項建構函式(遞迴到system.object逐個基類執行)使用base和this可以改變類內預設的呼叫順序
建構函式的執行順序
任何建構函式都可以進行配置,以便在執行自己的 前呼叫其它建構函式。我們首先看看在建立類的例項時會發生什麼情況。為了例項化派生的類,必須例項化它的基類。而要例項化這個基類,又必須例項化這個基類的基類,這樣一直例項化到system.object為止。結果是無論使用什麼建構函式例項化乙個類,總是要先呼叫s...
PHP建構函式的執行順序
php建構函式的執行順序 測試 如下 class grandfather class father extends grandfather class son extends father test new son 結果是 son class grandfather class father ext...
C 建構函式的執行順序
類的大小 1 一般情況下,類的大小是類裡資料成員大小之和,普通函式不佔空間 2 static不佔空間大小 3 virtual虛函式,如果有虛函式,則多乙個vptr 虛指標 不管有多少虛函式,都只有乙個虛指標,指標佔4個位元組大小。4 空類佔乙個位元組大小。建構函式的執行順序 class test t...