关于拳击的问题......
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个新的重新装箱吗?
将一个盒装值分配给另一个盒装值是什么意思,比如在最后一行旁边?
将一个盒装值分配给一个新的对象变量是什么意思,比如在最后一行?
答案 0 :(得分:2)
oi = oj;
object o = ok;
盒装值是对象。只有普通的参考副本。没有拳击涉及。此外,
将一个盒装值分配给另一个盒装值是什么意思,比如在最后一行旁边?
您没有为another value
分配值。您刚刚将值分配给“变量”oi
。
答案 1 :(得分:1)
嗯,你总是可以检查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