gpt4 book ai didi

c# - 为什么 Stack 和 Queue 没有 Capacity 属性而 List 有?

转载 作者:可可西里 更新时间:2023-11-01 08:25:58 25 4
gpt4 key购买 nike

Capacity 属性在 List 中是否比在其他集合(如 Stack 和 Queue)中更有用?还是有其他方法可以获取 Stack 或 Queue 的容量?

最佳答案

我认为 List 具有 Capacity 属性而 StackQueue 没有的原因是这些类型的正常用法是不同的。

对于 List,用大量值填充它是相当常见的,甚至在它创建一段时间后也是如此。提供 Capacity 属性(和构造函数参数)有助于减少将大量项目添加到列表时将完成的重新分配的数量。

StackQueue 另一方面,它们不会立即添加大量项目已创建。

据推测,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com