Нет, это не будет в штучной упаковке. Во время выполнения базовый массив для List<int>
будет действительно int[]
. Обратите внимание, что это не только случай с подлинными примитивными типами: List<T>
не будет содержать значения любого типа значений (при условии, что он был объявлен как List<Guid>
и т. Д., А не List<object>
).
В общем случае, генерические файлы в .NET хранят намного больше информации, чем в Java. CLR изначально понимает дженерики и имеет дело с ними надлежащим образом, а не на Java, где JVM в значительной степени не знает их.
Например, если вы пишете:
object list = new List<string>();
Type type = list.GetType();
Тогда type
будет равна - который затем отличается (скажем) List<Guid>
и т.д.
Однако вызов, например, 'new T [10]' будет по-прежнему создавать правильный тип массива, даже для ссылочных типов. –