枚举类型的哈希集的奇数相等结果

本文关键字:结果 类型 哈希集 枚举 | 更新日期: 2023-09-27 18:09:06

我用不同的方法构造了两个哈希集,它们包含了所有enum的值。

<>之前setWithAllEnums.Equals (setToTest);//返回false! (setWithAllEnums.Except (setToTest) .Any ());//返回True之前


为什么它们不相等?.NET没有为枚举提供GetHashCode吗?

枚举类型的哈希集的奇数相等结果

HashSet<T>不覆盖Equals。即使两个散列集包含完全相同的值,如果它们引用不同的对象,它们仍然是不相等的。您需要的方法是SetEquals

Tim Schmelter提出了一个很好的观点。x.SetEquals(y)!x.Except(y).Any()也不是一回事。集合x = {1, 2}和y = {1, 2, 3}不相等,但!x.Except(y).Any()为真。x.SetEquals(y)相当于!x.Except(y).Any() && !y.Except(x).Any()