在.net中从HashSet中获取所有元素的有效方法

本文关键字:元素 有效 方法 获取 net 中从 HashSet | 更新日期: 2023-09-27 18:09:05

假设,我有一个包含元素的HashSet:

HashSet<int> hsData = new HashSet<int>();

,在某些时候我需要处理这些元素(一个接一个)。当然,我可以把它转换成一个数组,然后这样操作:

int[] arr = hsData.ToArray();

但我不确定这种转换的效率如何?

我看到人们建议在HashSet本身上使用foreach,但由于我的代码的体系结构,我不能使用它。我需要一些可以这样工作的东西:

是最后一个元素吗?如果没有,那就得到它,然后进入下一个

元素。

在.net中从HashSet中获取所有元素的有效方法

正如您所说,转换为数组可能会有一些性能缺陷。foreach在后台所做的是在HashSet中获得一个枚举器并遍历它。

HashSet<T>还实现了IEnumerable<T>,可以用它以一种更有效的方式枚举集合。参考IEnumerable

如果您愿意,可以使用foreach still。只需保持给定列表中所有元素的运行计数器,在进行迭代时进行递减,并与计数器进行比较。

另一方面,把它变成一个数组有什么大不了的吗?这个操作发生了上千次了吗?

ToArray还不存在,但是您可以使用CopyTo