1

关于拳击的问题...

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 次新的重新装箱?

将一个装箱值分配给另一个装箱值是什么意思,例如在最后一行的旁边?

像最后一行一样,将装箱的值分配给新的对象变量是什么意思?

4

2 回答 2

2
oi = oj;
object o = ok;

装箱的值是对象。只有普通的参考副本。不涉及拳击。还,

将一个装箱值分配给另一个装箱值是什么意思,例如在最后一行的旁边?

您没有为another value. 您刚刚将值分配给 "variable" oi

于 2013-03-23T05:54:54.837 回答
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
于 2013-03-23T05:54:56.797 回答