.NET 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];
Стоимость бокса (по моему мнению) - это необходимость создания объекта в куче, копирование выделенного стека в новый объект и наоборот для распаковки.
Как использование дженериков преодолевает это? Является ли выделенное стекем целое число в стеке и указывается из кучи (думаю, это не так из-за того, что произойдет, когда оно выйдет из сферы)? Похоже, что все еще нужно копировать его где-то еще из стека.
Что действительно происходит?