Подтвердить что ты не робот

Каков максимальный предел данных в списке <string> в С#?

Сколько значений я могу добавить в список?

Например:

List<string> Item = runtime data

Данные не фиксированы по размеру. Это может быть 10 000 или более 1 000 000. У меня есть Googled, но не нашли точного ответа.

4b9b3361

Ответ 1

Максимальное количество элементов, которые могут быть сохранены в текущей реализации List<T>, теоретически Int32.MaxValue - чуть более 2 миллиардов.

В текущей реализации Microsoft CLR существует ограничение на максимальный размер объекта 2 ГБ. (Возможно, что другие реализации, например Mono, не имеют этого ограничения.)

В вашем конкретном списке содержатся строки, которые являются ссылочными типами. Размер ссылки будет 4 или 8 байтов, в зависимости от того, работаете ли вы в 32-разрядной или 64-разрядной системе. Это означает, что практический предел количества строк, которые вы можете сохранить, составит примерно 536 миллионов на 32-битных или 268 миллионов на 64-разрядных версиях.

На практике у вас, скорее всего, закончится выделенная память, прежде чем вы достигнете этих ограничений, особенно если вы работаете в 32-разрядной системе.

Ответ 2

2147483647, потому что все функции из списка используются с помощью int.

Источник от mscorlib:

private T[] _items;
private int _size;

public T this[int index]
{
  get
    {
      //...
    }
}

Ответ 3

list.Count() - int32, поэтому он должен быть максимальным пределом для int32, но как ваш список работает над этим пределом, это замечательное наблюдение.

если вы выполняете некоторые операции manupulation в списке, это теоретически будет линейным.

Я бы сказал, что если у вас есть очень большое количество элементов thnink о параллельных коллекциях в .net 4.0, это сделает ваши операции с списком более отзывчивыми.