首页 >后端开发 >C++ >如何正确重写 Equals() 和 GetHashCode() 以获得高效的 LINQ except()?

如何正确重写 Equals() 和 GetHashCode() 以获得高效的 LINQ except()?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-05 10:54:411009浏览

How to Correctly Override Equals() and GetHashCode() for Efficient LINQ Except()?

自定义类的 Equals() 和 GetHashCode() 的正确实现

为您的RecommendationDTO 类有效利用 LINQ except() 方法,您需要重写 Equals() 和 GetHashCode()方法。

Equals() 方法:

Equals() 方法确定两个对象是否具有相同的值。这是更新的实现:

public override bool Equals(object obj)
{
    var item = obj as RecommendationDTO;

    if (item == null)
    {
        return false;
    }

    return this.RecommendationId.Equals(item.RecommendationId);
}
  • 它首先检查传递的对象是否可以转换为RecommendationDTO 实例。
  • 如果成功,它会比较两个对象的RecommendationId 属性。

GetHashCode()方法:

GetHashCode() 方法生成对象的哈希码。这用于更快的对象比较和查找。这是更新的实现:

public override int GetHashCode()
{
    return this.RecommendationId.GetHashCode();
}
  • 它只是返回RecommendationId 属性的哈希代码。

通过像这样重写 Equals() 和 GetHashCode(),您可以确保 LINQ 的 except() 方法将根据RecommendationId 值准确识别并排除重复的RecommendationDTO 对象。

以上是如何正确重写 Equals() 和 GetHashCode() 以获得高效的 LINQ except()?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn