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

C# 到 IL 深度解析:第4章 關鍵字與操作符 (上)(1) - return 後代碼消除與建構函數命名

     編輯:關於C語言

return 後代碼的編譯期消除

// C# 代碼
return;
Console.WriteLine("hi"); // 不會編譯進 IL

IL 僅含 br.s IL_0002 ret,編譯器偵測到不可達代碼並移除,同時發出警告。

建構函數在 IL 中的命名

C# 建構函數編譯為 .ctor (instance) 或 .cctor (static)。帶參數建構函數名稱同為 .ctor,以簽章區分。

.method private hidebysig specialname rtspecialname instance void .ctor(int32 i) il managed {
    ldarg.0
    call instance void [mscorlib]System.Object::.ctor()
    ldstr "hi"
    call void [mscorlib]System.Console::WriteLine(string)
    ret
}

specialname 與 rtspecialname

  • specialname:標記特殊名稱方法(建構子、屬性存取子、運算子等)。
  • rtspecialname:運行時特殊名稱,供 CLR 內部識別。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved