【发布时间】:2013-04-07 03:50:46
【问题描述】:
说,我有一个带有元素的 HashSet:
HashSet<int> hsData = new HashSet<int>();
有时我需要处理这些元素(一个接一个)。我当然可以将其转换为数组并以这种方式使用它:
int[] arr = hsData.ToArray();
但我不确定这种转换的效率如何?
我看到人们建议在 HashSet 本身上使用 foreach,但由于我的代码架构,我无法使用它。我需要一些可以这样工作的东西:
它是最后一个元素吗?如果没有,那么得到它并前进到下一个 元素。
【问题讨论】:
-
我并没有真正理解这个问题......但是...... “但我不确定这种转换的效率如何?” 你有没有检查它是否是重要和重要?不要费心改进没有任何影响的东西。
-
HashSet 中的“最后一个元素”是什么?套装没有排序。
-
@dtb 我认为他的意思是最后一个可用的元素。
-
您对为什么不能使用
foreach的解释似乎非常站不住脚。如果您能在此处提供更多详细信息,这将非常有帮助,因为foreach循环是迄今为止处理集合中每个项目的最自然的解决方案。 -
正如@JonSkeet 所说 - 如果您不想对最后一个元素进行任何特殊处理,
foreach将是您的最佳选择。您的场景正是foreach的用途(除非您的问题中没有包含其他因素)。如果您想要更多控制权,也可以使用for循环和HashSet.Count。