重写 Equals() 和 GetHashCode() 以获得有效的对象等价
在追求对象相等性时,Equals() 和 GetHashCode() )方法发挥着关键作用。对于自定义类,有必要重写这些方法以建立有意义的比较和哈希机制。本文阐明了在RecommendationDTO 类的上下文中实现这些方法的正确方法,使其能够与 LINQ except() 方法无缝集成。
重写 Equals()
重写 GetHashCode()
示例实现
这是一个增强的实现RecommendationDTO的Equals()和GetHashCode()方法class:
public override bool Equals(object obj) { var item = obj as RecommendationDTO; if (item == null || ReferenceId == Guid.Empty || item.ReferenceId == Guid.Empty) { return false; } return this.RecommendationId.Equals(item.RecommendationId); } public override int GetHashCode() { if (ReferenceId == Guid.Empty) { throw new InvalidOperationException("ReferenceId cannot be Guid.Empty when calculating hash code."); } return this.RecommendationId.GetHashCode(); }
通过以这种方式实现 Equals() 和 GetHashCode(),RecommendationDTO 类现在可以有效地与 LINQ except() 方法一起使用,确保处理具有相同有意义属性的对象一样独特。
以上是如何在 C# 中正确重写 Equals() 和 GetHashCode() 进行有效的对象比较?的详细内容。更多信息请关注PHP中文网其他相关文章!