うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【C#】for ループの i++ と ++i は IL 的に差があるのか

昔 for は i++ じゃなくて ++i を使おうって言われたことがあった気がしたので
実際に IL でどう違うのか調べてみました

for (var i = 0; i < 10; i++)
{
}
         
for (var i = 0; i < 10; ++i)
{
}

IL を見てみる

i++ がこちら

            IL_0007: ldloc.0
            IL_0008: ldc.i4.1
            IL_0009: add
            IL_000a: stloc.0

++i がこちら

            IL_001a: ldloc.2
            IL_001b: ldc.i4.1
            IL_001c: add
            IL_001d: stloc.2

どちらも IL 的には違いが無かった 合ってるか分からないが IL の説明を追加すると

ldloc : 変数 i をStack ldc.i4.1 : int 型 の 1 をStack add : 先程Stack に入れた値を加算 (i++) stloc : stack に入れた i を取り出す

でした