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 に答える