9

我在合并两个对象(车辆)列表时尝试删除重复项,LINQ例如:

var list = list1.Union(list2);

我有overridden the Equals 方法,代码甚至不会进入它。但是,此代码确实进入了覆盖:

Vehicle v1 = new Vehicle();
Vehicle v2 = new Vehicle();

if (v1.Equals(v2)).......

编辑

车辆覆盖的签名在这里:

我也实施IEquatable<Vehicle>

 public bool Equals(Vehicle other)
 {                     
 }

 public override int GetHashCode()
 {            
 }

我宁愿不将比较器传递给 Union 方法,因为我想要 Vehicle 类中的逻辑。

我在这里做错了什么?

4

1 回答 1

6

您与 无关IEquatable<Vehicle>,它只是一个选项而不是必需的must-do。我认为你没有Equals正确覆盖你的,它应该是这样的:

 public override bool Equals(object other) {                     
   //your own code
 }

 public override int GetHashCode() {            
   //your own code
 }

注意关键字override和与基础对象的虚拟object方法匹配的类型参数。 Equals

于 2013-10-03T14:14:49.660 回答