我想知道SortedList容量属性是如何工作的。 在构造函数中我设置容量等于2,但我可以添加更多元素。 为什么呢?
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));
答案 0 :(得分:2)
initialCapacity
构造函数的SortedList
参数说明此参数指定列表的初始容量,而不是其最终容量:
initialCapacity
输入:System.Int32
SortedList
对象可以包含的初始元素数。
当您知道要添加到列表中的元素数时,此参数用于减少重新分配的数量。此参数不会更改SortedList
是动态大小的集合的事实,当您向其添加元素时,该集合能够扩展。
对列表的Capacity
属性的备注提供了进一步的说明:
中的元素数量
Capacity
是SortedList
对象可以存储的元素数。Count
是实际位于SortedList
。
Capacity
始终大于或等于Count
。如果Count
在添加元素时超过Capacity
,则在复制旧元素和添加新元素之前,通过重新分配内部数组会自动增加容量。
答案 1 :(得分:0)
容量始终大于或等于Count。如果Count在添加元素时超出容量,则在复制旧元素和添加新元素之前,通过重新分配内部数组来自动增加容量。
https://msdn.microsoft.com/en-us/library/system.collections.sortedlist.capacity(v=vs.110).aspx
答案 2 :(得分:0)
任何List(已排序或未排序)的容量默认情况下从0开始,或者在构造函数中设置的任何容量。当您添加超过该容量的新项目时,基础数据存储将以之前容量的两倍重新初始化,并且复制引用。