Capacity 属性在 List 中是否比在其他集合(如 Stack 和 Queue)中更有用?还是有其他方法可以获取 Stack 或 Queue 的容量?
最佳答案
我认为 List
具有 Capacity
属性而 Stack
和 Queue
没有的原因是这些类型的正常用法是不同的。
对于 List
,用大量值填充它是相当常见的,甚至在它创建一段时间后也是如此。提供 Capacity
属性(和构造函数参数)有助于减少将大量项目添加到列表时将完成的重新分配的数量。
Stack
和 Queue
另一方面,它们不会立即添加大量项目已创建。
据推测,Microsoft 认为不值得添加 Capacity
属性,因为它不会被频繁使用。
但是,请注意 Queue does have a constructor that allows you to specify an initial capacity , 和 so does Stack .
另请注意,这两个类也有一个 TrimExcess()
方法,如下面的@drch 所述。
所以 Microsoft 认为它在构造时有用,但以后就没用了 - 所以他们只向构造函数添加了容量功能。
(顺便说一句,我刚刚快速检查了我们的代码库,似乎我们唯一一次使用 List
的容量实际上是在构建时。所以也许如果微软现在设计 List,他们可能还会省略 List 的 Capacity
属性...)
关于c# - 为什么 Stack<T> 和 Queue<T> 没有 Capacity 属性而 List<T> 有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17338428/