3

ここから

// The .NET Framework 2.0 way to create a list
List<int> list1 = new List<int>();

// No boxing, no casting:
list1.Add(3);    

キャスティングがないことは理解しています。しかし、なぜボクシングが起こらないのですか?

「3」はスタックにあり、リストはヒープにあります。

ボクシングせずにスタックからヒープに値が移動したのはどうしてですか?

ボンネットの下で何が起こるのですか?

4

2 に答える 2

3

List をサポートする配列は ではなく であるため、ここではボックス化は行われT[]ませんobject[]。したがって、ランタイムはアイテムが整数であることを認識しており、それらをボックス化する必要はありません。

于 2013-10-05T23:02:44.990 に答える
0

リストには、ヒープ上に事前に割り当てられた int の配列が既にあるため、これらの int の 1 つを 3 に変更するだけで済みます。

于 2013-10-05T23:03:38.250 に答える