复制盒装值

本文关键字:盒装 复制 | 更新日期: 2023-09-27 18:05:19

关于拳击的问题…

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赋值。你刚刚赋值给变量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