содержит сами значения int.
1.0 способ создания коллекции целых чисел (например) был:
ArrayList list = new ArrayList();
list.Add(i); /* boxing */
int j = (int)list[0]; /* unboxing */
Наказанием за использование этого является отсутствие безопасности типов и производительности из-за упаковки и распаковки.
Путь .NET 2.0 заключается в использовании обобщений:
List<int> list = new List<int>();
list.Add(i);
int j = list[0];
Цена бокса (насколько я понимаю) - это необходимость создать объект в куче, скопировать целое число в стеке для нового объекта и наоборот для распаковки.
Как использование дженериков преодолевает это? Означает ли выделенное стеком целое число в стеке и на которое указывает куча (я полагаю, это не так из-за того, что произойдет, когда оно выйдет из области видимости)? Кажется, все еще есть необходимость скопировать его из стека в другое место.
Что на самом деле происходит?