Remplacer Equals() et GetHashCode() pour une équivalence d'objet efficace
Dans la quête de l'égalité des objets, Equals() et GetHashCode( ) les méthodes jouent un rôle central. Pour les classes personnalisées, il devient nécessaire de remplacer ces méthodes pour établir un mécanisme de comparaison et de hachage significatif. Cet article met en lumière l'approche correcte pour implémenter ces méthodes dans le contexte d'une classe RecommendationDTO, lui permettant de s'intégrer de manière transparente à la méthode LINQ Except().
Remplacer Equals()
Remplacement de GetHashCode()
Exemple de mise en œuvre
Voici une version améliorée implémentation des méthodes Equals() et GetHashCode() pour la classe 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(); }
En implémentant Equals() et GetHashCode() de cette manière, la classe RecommendationDTO peut désormais être utilisée efficacement avec la méthode LINQ Except(), garantissant que les objets ayant les mêmes propriétés significatives sont traités comme distincts.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!