gpt4 book ai didi

c# - LINQ Union 不会进入重写的 Equals 方法

转载 作者:太空狗 更新时间:2023-10-29 17:53:36 25 4
gpt4 key购买 nike

在使用 LINQ 合并两个对象(车辆)列表时,我试图删除重复项喜欢:

var list = list1.Union(list2);

我有 overridden the Equal s 的方法和代码甚至不会进入它。但是,这段代码确实进入了覆盖:

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

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

编辑

Vehicle 覆盖的签名在这里:

我还实现了 IEquatable<Vehicle>

 public bool Equals(Vehicle other)
{
}

public override int GetHashCode()
{
}

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

我做错了什么?

最佳答案

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

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

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

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

关于c# - LINQ Union 不会进入重写的 Equals 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19157347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com