我有我的自定义类的 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 类中实现一些比较接口方法会更优雅。
有可能还是我只是不明白某事?
谢谢。