首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 列舉初始化深度探討(三)

     編輯:關於C語言

IL 層面揭示差異

比較兩種初始化:


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。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved