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

C# 到 IL 深度解析:第4章 關鍵字與操作符 (上)(4) - 傳址參數 ref/out 的 IL 實現與指針類型

     編輯:關於C語言

ref/out 在 IL 中的統一表現

IL 使用 & 後綴標記傳址參數(如 int32&)。ldloca.s 將區域變數位址壓入堆疊,stind 透過位址存值。

範例:ref 參數修改

// C# 代碼
public void abc(ref int i) { i = 10; }

IL:

.method public hidebysig instance void abc(int32& i) il managed {
    ldarg.1          // 取得參數位址
    ldc.i4.s 10
    stind.i4         // 透過位址存入 10
    ret
}

ref 與 out 的 IL 不可區分

兩者編譯後均為傳址,IL 無對應修飾符區分。反編譯時無法還原原始關鍵字。

三種指針類型

IL 支援 managed pointer (&)、unmanaged pointer (*)、function pointer,提供比 C# 更底層的記憶體操作能力。

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