Überschreiben von Equals() und GetHashCode() für effektive Objektäquivalenz
Auf der Suche nach Objektgleichheit werden Equals() und GetHashCode( ) Methoden spielen eine zentrale Rolle. Bei benutzerdefinierten Klassen ist es erforderlich, diese Methoden zu überschreiben, um einen sinnvollen Vergleichs- und Hashing-Mechanismus einzurichten. Dieser Artikel beleuchtet den richtigen Ansatz zur Implementierung dieser Methoden im Kontext einer RecommendationDTO-Klasse und ermöglicht eine nahtlose Integration mit der LINQ Except()-Methode.
Überschreiben von Equals()
Überschreiben von GetHashCode()
Beispielimplementierung
Hier ist eine verbesserte Implementierung der Methoden Equals() und GetHashCode() für die Klasse RecommendationDTO:
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(); }
Durch Implementierung Equals() und GetHashCode() auf diese Weise kann die RecommendationDTO-Klasse nun effektiv mit der LINQ-Except()-Methode verwendet werden, wodurch sichergestellt wird, dass Objekte mit denselben aussagekräftigen Eigenschaften als unterschiedlich behandelt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Equals() und GetHashCode() für einen effektiven Objektvergleich in C# ordnungsgemäß überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!