你如何确定两个哈希集是否相等(按值,而不是参考)?

我想确定是否在.NET 3.5(C#)中的两个HashSet对象是相同的集合, 包含相同的值。 这似乎是一个显然想做的事情,但没有提供的function似乎给你这个信息。

我认为这样做的方式是通过检查两组数是否相等一组是另一组的子集(不适当)。 我认为唯一可能发生的是如果他们是平等的。 示例代码:

 HashSet<int> set1 = new HashSet<int>(); set1.Add(1); set1.Add(2); set1.Add(3); HashSet<int> set2 = new HashSet<int>(); set2.Add(1); set2.Add(2); set2.Add(3); if(set1.Count == set2.Count && set1.IsSubsetOf(set2)) { // do something } 

这会一直工作吗? 有没有更好的办法? 为什么不HashSet有一个public bool IsEqualSetWith()函数?

 SetEquals()? 
 IEqualityComparer<HashSet<int>> comp = HashSet<int>.CreateSetComparer(); Console.WriteLine("CreateSetComparer set1 == set2 : {0}", comp.Equals(set1, set2)); // or bool areEqual = HashSet<int>.CreateSetComparer().Equals(set1, set2);