枚举类型的哈希集的奇数相等结果
本文关键字:结果 类型 哈希集 枚举 | 更新日期: 2023-09-27 18:09:06
我用不同的方法构造了两个哈希集,它们包含了所有enum的值。
<>之前setWithAllEnums.Equals (setToTest);//返回false! (setWithAllEnums.Except (setToTest) .Any ());//返回True之前
为什么它们不相等?.NET没有为枚举提供GetHashCode吗?
HashSet<T>
不覆盖Equals
。即使两个散列集包含完全相同的值,如果它们引用不同的对象,它们仍然是不相等的。您需要的方法是SetEquals
。
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()