DA0006 : Remplacer Equals() pour les types valeurDA0006: Override Equals() for value types

ID de règleRule Id DA0006DA0006
CategoryCategory Utilisation du .NET Framework.NET Framework Usage
Méthodes de profilageProfiiling methods ÉchantillonnageSampling
MessageMessage Remplacer Equals et l’opérateur d’égalité pour les types valeur.Override Equals and equality operator on value types.
Type de messagesMessge type WarningWarning

CauseCause

Les appels à la méthode Equals ou aux opérateurs d’égalité d’un type valeur public représentent une part importante des données de profilage.Calls to the Equals method or the equality operators of a public value type are a significant proportion of the profiling data. Implémentez une méthode plus efficace.Consider implementing a more efficient method.

Description de la règleRule description

Pour les types valeur, l’implémentation héritée de Equals utilise la bibliothèque System.Reflection et compare le contenu de tous les champs du type.For value types, the inherited implementation of Equals uses the System.Reflection library and compares the contents of all fields in the type. Le processus de réflexion sollicite fortement les ressources informatiques et la comparaison de chaque champ à la recherche d'une égalité peut s'avérer inutile.Reflection is computationally expensive, and comparing every field for equality might be unnecessary. Si des utilisateurs sont susceptibles de comparer ou de trier des instances, ou de les utiliser en tant que clés de table de hachage, votre type valeur doit implémenter Equals.If you expect users to compare or sort instances or to use them as hash table keys, your value type should implement Equals. Si votre langage de programmation prend en charge la surcharge des opérateurs, vous devez également fournir une implémentation des opérateurs d’égalité et d’inégalité.If your programming language supports operator overloading, you should also provide an implementation of the equality and inequality operators.

Pour plus d’informations sur la façon de remplacer Equals et les opérateurs d’égalité, consultez Conseils pour l’implémentation de Equals et de l’opérateur d’égalité (==).For more information about how to override Equals and the equality operators, see Guidelines for Implementing Equals and the Equality Operator (==).

Comment rechercher la cause d’un avertissementHow to investigate a warning

Pour obtenir un exemple d’implémentation de Equals et des opérateurs d’égalité, consultez la règle d’analyse du code CA1815 : Remplacez Equals et l’opérateur égal à dans les types valeurFor an example of implementing the Equals and equality operators, see the code analysis rule CA1815: Override equals and operator equals on value types