Gostaria de saber como funciona a propriedade de capacidade SortedList. No construtor eu configuro capacidade igual a 2, mas posso adicionar mais elementos. Por quê?
SortedList<int, string> sortedList = new SortedList<int, string>{ Capacity = 2 };
sortedList.Add(0, "zero");
sortedList.Add(1, "one");
sortedList.Add(2, "two");
sortedList.Add(3, "three");
sortedList.Values.ToList().ForEach(v => Console.WriteLine(v));
Respostas:
2 para resposta № 1A descrição de initialCapacity
parâmetro de SortedList
O construtor s diz que esse parâmetro especifica a capacidade inicial da lista, não sua capacidade final:
initialCapacity
Tipo:System.Int32
O número inicial de elementos que oSortedList
objeto pode conter.
Esse parâmetro é usado para reduzir o número de realocações quando você sabe o número de elementos que deseja adicionar à lista. Este parâmetro não altera o fato de que SortedList
é uma coleção dimensionada dinamicamente, capaz de expandir quando você adiciona elementos a ela.
Observações ao Capacity
propriedade da lista fornecer mais esclarecimentos:
Capacity
é o número de elementos que oSortedList
objeto pode armazenar.Count
é o número de elementos que estão realmente noSortedList
.
Capacity
é sempre maior ou igual aCount
. E seCount
excedeCapacity
Ao adicionar elementos, a capacidade é aumentada automaticamente realocando o array interno antes de copiar os elementos antigos e adicionar os novos elementos.
0 para resposta № 2
A capacidade é sempre maior ou igual a Count. Se a Contagem exceder a Capacidade ao adicionar elementos, a capacidade será aumentada automaticamente realocando a matriz interna antes de copiar os elementos antigos e adicionar os novos elementos.
https://msdn.microsoft.com/en-us/library/system.collections.sortedlist.capacity(v=vs.110).aspx
0 para resposta № 3
A capacidade de qualquer lista (classificada ou não) começaem 0 por padrão ou qualquer capacidade definida no construtor. Quando você adiciona um novo item que ultrapassa essa capacidade, o armazenamento de dados subjacente é reinicializado com o dobro da capacidade anterior e as referências são copiadas.