IL_0003: ldloc.0 // push i on the stack (first time) [ stack = 3] IL_0004: ldloc.0 // push i on the stack (second time) [ stack = 3 3] IL_0005: ldc.i4.1 // push constant 1 on the stack [ stack = 3 3 1] IL_0006: add // add [stack = 3 4] IL_0007: dup // [ stack = 3 4 4] IL_0008: stloc.0 // pop stack and put the value in i [stack = 3 4] IL_0009: add // add [stack = 7] IL_000a: stloc.0 // pop stack and put the value in i [stack = ]in the case below, it has to fetch the value of i 4 times
IL_0003: ldloc.0 // 1 IL_0004: ldloc.0 // 2 IL_0005: ldc.i4.1 IL_0006: add IL_0007: dup IL_0008: stloc.0 IL_0009: ldloc.0 // 3 IL_000a: ldc.i4.1 IL_000b: add IL_000c: dup IL_000d: stloc.0 IL_000e: add IL_000f: ldloc.0 // 4 IL_0010: ldc.i4.1 IL_0011: add IL_0012: dup IL_0013: stloc.0 IL_0014: add IL_0015: add IL_0016: stloc.0