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

C# 到 IL 深度解析:第3章 選擇與循環 (4) - 變數作用域與 while 循環的 IL 實現

     編輯:關於C語言

C# 與 IL 的變數作用域差異

C# 同層級大括號內不可重複宣告同名變數;IL 則將其視為不同區域變數(如 V_0、V_1),不受區塊作用域限制。

while 循環的 IL 結構

// C# 代碼
class zzz {
    static bool i = true;
    public static void Main() {
        while (i) {
            System.Console.WriteLine("hi");
        }
    }
}

IL 關鍵點:

  • 靜態欄位 i 在 .cctor 初始化為 1(true)。
  • 方法開頭 br.s IL_000c 跳至條件檢查處。
  • IL_000c:ldsfld 載入 i,brtrue.s IL_0002 若為真則進入循環體 IL_0002。
  • 循環體輸出 "hi" 後無遞增邏輯,屬無限循環示範。
.method public hidebysig static void vijay() il managed {
    .entrypoint
    br.s IL_000c
    IL_0002: ldstr "hi"
    call void [mscorlib]System.Console::WriteLine(string)
    IL_000c: ldsfld bool zzz::i
    brtrue.s IL_0002
    ret
}

brtrue 與 brfalse

  • brtrue:堆疊頂為非零(true)則跳轉。
  • brfalse:堆疊頂為零(false)則跳轉。

這展示了 IL 以條件分支實現高階循環,且布爾值在 IL 中實為整數 0/1。

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