変数の宣言をループ内でした場合とループ外でした場合

それぞれについて、中間言語になるとどのようなコードになるかみていきましょう

ループ内で宣言

C#コード

while(true)
{
    int i = 3;
}

IL(中間言語)

// loop start (head: IL_0006)
	IL_0002: nop
	IL_0003: ldc.i4.3
	IL_0004: stloc.0
	IL_0005: nop

	IL_0006: ldc.i4.1
	IL_0007: stloc.1
	IL_0008: br.s IL_0002
// end loop

ループの外で宣言

C#コード

int i;

while(true)
{
     i = 3;
}

IL(中間言語)

// loop start (head: IL_0006)
	IL_0002: nop
	IL_0003: ldc.i4.3
	IL_0004: stloc.0
	IL_0005: nop

	IL_0006: ldc.i4.1
	IL_0007: stloc.1
	IL_0008: br.s IL_0002
// end loop

C#

Posted by hidepon