ホームページ >バックエンド開発 >C++ >LINQ の Except() メソッドの Equals() と GetHashCode() を適切にオーバーライドする方法

LINQ の Except() メソッドの Equals() と GetHashCode() を適切にオーバーライドする方法

Susan Sarandon
Susan Sarandonオリジナル
2025-01-05 06:32:40220ブラウズ

How to Properly Override Equals() and GetHashCode() for LINQ's Except() Method?

カスタム クラスの Equals() メソッドと GetHashCode() メソッドの実装: 実践例

Equals() メソッドと GetHashCode() メソッドのオーバーライドカスタム クラスでは、オブジェクトの適切な比較とハッシュを確保するために重要です。この記事では、RecommendationDTO クラスにこれらのメソッドを実装して、LINQ の Except() メソッドで使用できるようにする正しい方法を説明します。

Equals() の実装

Equals をオーバーライドするには() を使用するには、固有のプロパティに基づいてオブジェクトを比較するカスタム実装を提供する必要があります。あなたの場合、RecommendationId プロパティが適切な識別子です。修正された実装は次のとおりです。

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

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

    return this.RecommendationId.Equals(item.RecommendationId);
}

GetHashCode() の実装

GetHashCode() メソッドは、オブジェクトのハッシュ コードを生成します。一貫した比較を行うには、同じ識別プロパティを持つオブジェクトに対して返されるハッシュ コードが同じである必要があります。あなたの場合、RecommendId プロパティのハッシュ コードを返すことができます:

public override int GetHashCode()
{
    return this.RecommendationId.GetHashCode();
}

LINQ Except() での使用

これらのオーバーライドされたメソッドを配置すると、 LINQ Except() メソッドを利用して、RecommendationId プロパティに基づいて互いに等しいオブジェクトを除外できるようになりました。例:

var list1 = new List<RecommendationDTO> { /* ... */ };
var list2 = new List<RecommendationDTO> { /* ... */ };

var result = list1.Except(list2);

注: Null 値を確認し、プロパティとメソッドの大文字と小文字を正しく使用してください。

以上がLINQ の Except() メソッドの Equals() と GetHashCode() を適切にオーバーライドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。