c# - 我的 List<T>.Distinct() 有什么问题?

标签 c# wpf overriding gethashcode

我有一个实现 IEqualityComparer 并覆盖以下方法的 MyItems 类:

public bool Equals(MyItems item1, MyItems item2)
{
    return (item1.ID == item2.ID && item1.itemName.Equals(item2));
}
public int GetHashCode(MyItems item)
{
    return item.ID.GetHashCode() ^ item.itemName.GetHashCode();
}

首先,为什么需要GetHashCode?我理解重写 Equals 方法,但是,GetHashCode 的必要性让我难以理解。

其次,这似乎不起作用。我在这里做错了什么吗?我不理解 GetHashCode 的地方, 可能是我绊倒的地方。

最佳答案

要回答您的第一个问题,只需查看 here了解更多信息。

回答你的第二个问题:你忘了 item2 应该是 item2.itemName

return (item1.ID == item2.ID && item1.itemName.Equals(item2.itemName));

关于c# - 我的 List<T>.Distinct() 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14130509/

相关文章:

c# - 如何确保无间隙和安全的发票编号生成(法律问题)

c# - 如何使用 wpf mvvm 在表单中生成(绑定(bind))测验

flutter - 我该如何解决这个弱警告? "The field doesn’ t 覆盖继承的 getter 或 setter。”

c# - 在 C# 中临时存储和重新设置属性值

c# - 格式异常 - 日期时间和小时

c# - 安装 ClickOnce 应用程序时出现问题

c# - WPF UserControl 在代码中创建,绑定(bind)未注册 INotifyPropertyChanged

java - 如何实现为对象实例添加值的默认接口(interface)方法

c++ - 调用重写虚方法的派生类调用父类方法调用了错误的方法

c# - Entity Framework 5.0 PostgreSQL (Npgsql) 默认连接工厂