効果的なオブジェクトの等価性を実現するための 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 中国語 Web サイトの他の関連記事を参照してください。