Каков максимальный предел данных в списке <string> в С#?
Сколько значений я могу добавить в список?
Например:
List<string> Item = runtime data
Данные не фиксированы по размеру. Это может быть 10 000 или более 1 000 000. У меня есть Googled, но не нашли точного ответа.
Ответ 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, это сделает ваши операции с списком более отзывчивыми.