在使用初始容量初始化的列表上调用`Clear()`

时间:2014-01-01 10:30:11

标签: c# list generic-list

我有一个具有指定初始容量的列表:

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吗?

2 个答案:

答案 0 :(得分:6)

根据documentation

  

容量保持不变。要重置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