关于拳击的问题...
int i = 2;
int j = 3;
int k = 4;
object oi = i;
object oj = j;
object ok = k;
oi = oj;
object o = ok;
最后 2 行是否会导致 2 次新的重新装箱?
将一个装箱值分配给另一个装箱值是什么意思,例如在最后一行的旁边?
像最后一行一样,将装箱的值分配给新的对象变量是什么意思?
oi = oj;
object o = ok;
装箱的值是对象。只有普通的参考副本。不涉及拳击。还,
将一个装箱值分配给另一个装箱值是什么意思,例如在最后一行的旁边?
您没有为another value
. 您刚刚将值分配给 "variable" oi
。
好吧,您可以随时检查 IL:
// int i = 2;
IL_0000: ldc.i4.2
IL_0001: stloc.0 // i
// int j = 3;
IL_0002: ldc.i4.3
IL_0003: stloc.1 // j
// int k = 4;
IL_0004: ldc.i4.4
IL_0005: stloc.2 // k
// object oi = i;
IL_0006: ldloc.0 // i
IL_0007: box System.Int32
IL_000C: stloc.3 // oi
// object oj = j;
IL_000D: ldloc.1 // j
IL_000E: box System.Int32
IL_0013: stloc.s 04 // oj
// object ok = k;
IL_0015: ldloc.2 // k
IL_0016: box System.Int32
IL_001B: stloc.s 05 // ok
// oi = oj;
IL_001D: ldloc.s 04 // oj
IL_001F: stloc.3 // oi
// object o = ok;
IL_0020: ldloc.s 05 // ok
IL_0022: stloc.s 06 // o