gpt4 book ai didi

c# - 为什么我不能预先分配一个 hashset

转载 作者:IT王子 更新时间:2023-10-29 03:51:17 25 4
gpt4 key购买 nike

为什么我不能预分配 hashset<T>

有时我可能会向它添加很多元素并且我想消除调整大小。

最佳答案

下面的答案写于 2011 年。现在在 .NET 4.7.2 和 .NET Core 2.0 中;它将在 .NET Standard 2.1 中。


没有技术原因说明为什么这不应该成为可能 - 微软只是没有选择公开具有初始容量的构造函数。

如果你可以调用一个接受 IEnumerable<T> 的构造函数并使用 ICollection<T> 的实现,我相信会使用集合的大小作为初始最小容量。请注意,这是一个实现细节。容量只需要大到足以存储所有不同的元素...

编辑:我相信,如果容量比它需要的大得多,构造函数将在完成找出有多少不同的元素真正时修剪多余的部分。

无论如何,如果您拥有您要添加到 HashSet<T> 的集合并且它实现了ICollection<T> ,然后将它传递给构造函数而不是一个一个地添加元素将是一个胜利,基本上 :)

编辑:一种解决方法是使用 Dictionary<TKey, TValue>而不是 HashSet<T> ,并且只是不使用这些值。不过,这并非在所有情况下都有效,因为它不会为您提供与 HashSet<T> 相同的界面。 .

关于c# - 为什么我不能预先分配一个 hashset<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771917/

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