HashSet可用的类型?

时间:2016-08-28 17:27:13

标签: c# types hashset

我知道HashSet可以使用像string和int这样的基本类型,我的问题是在HashSet中可以使用哪些类型。我正在尝试创建一个笛卡尔坐标的HashSet,它受益于没有重复的HashSet。我试过了

HashSet<int[]> temp = new HashSet<int[]>{new int[]{1,1}, new int[]{1,1} }

但这不起作用。寻找可用于创建唯一坐标列表的类型。

1 个答案:

答案 0 :(得分:3)

您正在创建引用类型的HashSet。在相等比较期间不比较引用类型的内容(除非String),只有引用指针本身。

您正在向数组实例的HashSet添加两个单独的数组实例。由于引用类型通常不会使用它们的内容相互比较,只有它们的内存引用&#34;,您的代码将无法按照您的意图运行。这两个实例是不同的 - 即使它们的内容是相同的。

Tuple类重写此行为,并使用其成员的哈希码的总和将一个实例与另一个实例进行比较。 Int []数组不会覆盖此行为。大多数.net引用类型不会覆盖比较运算符 - 元组是一个例外。