比較兩種初始化:
Alignment a = new Alignment(); // L_0001: ldc.i4.0
Alignment b = Alignment.Left; // L_0019: ldc.i4.0 (若 Left=0) 或 ldc.i4.1 (若 Left=1)
當第一個成員值為 0 時,IL 相同;若第一個成員非 0,編譯器會依定義自動調整 ldc.i4.x,體現多型思維——依型別定義推導正確常值。
Alignment a = new Alignment(); // 永遠等價 (Alignment)0
Alignment b = Alignment.Left; // 等價第一個成員常值
兩者不等價,除非第一個成員恰好為 0。