首頁 >後端開發 >C++ >如何正確重寫 Equals() 和 GetHashCode() 以獲得高效率的 LINQ except()?

如何正確重寫 Equals() 和 GetHashCode() 以獲得高效率的 LINQ except()?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-05 10:54:411046瀏覽

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

自訂類別的Equals() 和GetHashCode() 的正確實作

為您的RecommendationDTO 類別有效利用方法,您需要重寫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