Каков максимальный предел данных в список <string>в C #? - PullRequest
51 голосов
/ 11 октября 2010

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

Например:

List<string> Item = runtime data

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

Ответы [ 3 ]

71 голосов
/ 11 октября 2010

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

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

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

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

10 голосов
/ 11 октября 2010

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

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

private T[] _items;
private int _size;

public T this[int index]
{
  get
    {
      //...
    }
}
3 голосов
/ 11 октября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...