我正在尝试确定在.NET 3.5(C#)中两个HashSet
对象是否相等,即包含相同的值。这似乎是一个显而易见的需求,但提供的函数都无法给出此信息。
我想到的方法是检查这两个集合的计数是否相等,并且其中一个集合是另一个集合的子集(非真子集)。如果发生这种情况,我认为它们就是相等的集合。以下是示例代码:
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
的接口,可以使用System.Collections.Generic
中的ISet<T>
。 - Steve Lillis