【发布时间】:2013-03-05 06:01:14
【问题描述】:
我有自定义类的 HashSet:
public class Vertex
{
public string Name;
public override bool Equals(object obj)
{
var vert = obj as Vertex;
if (vert !=null)
{
return Name.Equals(vert.Name, StringComparison.InvariantCulture);
}
return false;
}
}
现在我有两个哈希集
HashSet<Vertex> hashSet1 = new HashSet<Vertex>();
HashSet<Vertex> hashSet1 = new HashSet<Vertex>();
现在我想在 hashSet1 中只包含不在 hashSet2 中的顶点 所以我使用了ExceptWith方法
hashSet1.ExceptWith(hashSet2);
但这不起作用。 我想这不起作用,因为我有复杂的类型。 所以问题是:是否需要在 Vertex 类中实现一些接口才能使这个东西工作? 我知道在创建 HashSet 时我可以传递一个 EqualityComparer 但在我看来,在 Vertex 类中实现一些比较接口方法会更优雅。
有可能还是我只是不明白某事?
谢谢。
【问题讨论】: