List
содержит ссылки размером 4 или 8 байтов, в зависимости от того, работаете ли вы в 32-битном или 64-битном режиме, поэтому если вы ссылаетесь на объект объемом 2 ГБ, который не увеличит фактический размер List
до 2 ГБ, но это только увеличит его на количество байтов, необходимых для ссылки на этот объект.
Это позволит вам ссылаться на миллионы объектов, и каждый объект может иметь размер 2 ГБ.Если у вас есть 4 объекта в List
и каждый по 2 ГБ, то у вас будет 8 ГБ объектов, на которые ссылается List
, но объект List
израсходовал бы только дополнительные 4 * 8 = 32байт.
Количество ссылок, которые можно хранить на 32-разрядной машине до того, как List
достигнет ограничения в 2 ГБ, составляет 536,87 миллиона, на 64-разрядной машине - 268,43 миллиона.
536 миллионов ссылок * 2 ГБ = МНОГО ДАННЫХ!
PS Рид отметил, что приведенное выше верно для ссылочных типов, но не для типов значений.Так что если вы держите типы значений, то ваш обходной путь действителен.Пожалуйста, смотрите комментарий ниже для получения дополнительной информации.