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

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

Mary-Kate Olsen
发布: 2025-01-05 10:54:41
原创
1033 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板