我正在探索 HashSet<T>
类型,但我不明白它在集合中的位置。
可以用它来代替List<T>
吗? ?我想象 HashSet<T>
的表现变得更好,但我看不到个人访问它的元素。
难道只是为了枚举?
最佳答案
重要的是HashSet<T>
就在名称中:它是一个集合。您可以对单个集合做的唯一事情就是确定它的成员是什么,并检查一个项目是否是一个成员。
询问是否可以检索单个元素(例如 set[45]
)是对集合概念的误解。没有集合的第 45 个元素这样的东西。集合中的项目没有顺序。集合 {1, 2, 3} 和 {2, 3, 1} 在各个方面都是相同的,因为它们具有相同的成员资格,而成员资格才是最重要的。
遍历 HashSet<T>
有点危险因为这样做会对集合中的项目强加顺序。该顺序实际上并不是该集合的属性。你不应该依赖它。如果集合中项目的排序对您很重要,则该集合不是集合。
集真的是有限的,而且成员都是独一无二的。另一方面,它们的速度非常快。
关于c# - 什么时候应该使用 HashSet<T> 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1247442/