我有一个具有指定初始容量的列表:
private void Foo()
{
List<double> myList = new List<double>(1024);
myList.Add(1.0);
myList.Add(2.0);
....
myList.Clear(); <-- what is the list's 'initial' capacity now?
}
致电myList
后,myList.Reset()
的容量是多少?
是1024吗?
答案 0 :(得分:6)
容量保持不变。要重置List的容量,请调用TrimExcess方法或直接设置Capacity属性。减小容量会重新分配内存并复制List中的所有元素。修剪空列表会将列表的容量设置为默认容量。
当然,您只需在拨打Clear
之前和之后设置断点并检查Capacity
属性的值即可自行确认。
没有Reset
方法(除非您指的是某种扩展方法),但上面引用的文档表明您可以通过调用TrimExcess
来重置容量。
答案 1 :(得分:2)
List<double> myList = new List<double>(1024);
Console.WriteLine(myList.Capacity);
myList.Add(1.0);
myList.Add(2.0);
Console.WriteLine(myList.Capacity);
myList.Clear();
Console.WriteLine(myList.Capacity);
容量保持不变。要重置List的容量,请调用TrimExcess方法或直接设置Capacity属性。减小容量会重新分配内存并复制List中的所有元素。修剪空列表会将列表的容量设置为默认容量。
见这里:http://msdn.microsoft.com/en-us/library/dwb5h52a%28v=vs.110%29.aspx