DA0006: Eseguire l'override di Equals() per i tipi di valore
ID regola |
DA0006 |
Category |
Utilizzo di .NET Framework |
Metodi di profilo |
Campionamento |
Messaggio |
Eseguire l'override di Equals e dell'operatore di uguaglianza sui tipi di valore. |
Tipo messaggio |
Avviso |
Causa
Le chiamate al metodo Equals o agli operatori di uguaglianza di un tipo di valore pubblico rappresentano una percentuale significativa dei dati di profilo. Considerare l'implementazione di un metodo più efficiente.
Descrizione della regola
Per i tipi di valore, l'implementazione ereditata di Equals utilizza la libreria System.Reflection e confronta il contenuto di tutti i campi del tipo. La libreria Reflection è onerosa dal punto di vista del calcolo, inoltre il confronto di ogni campo per determinarne l'uguaglianza potrebbe essere superfluo. Se si prevede che gli utenti confrontino o ordinino le istanze oppure le utilizzino come chiavi di tabelle hash, il tipo di valore deve implementare Equals. Se il linguaggio di programmazione in uso supporta l'overload dell'operatore, è necessario fornire un'implementazione degli operatori di uguaglianza e disuguaglianza.
Per ulteriori informazioni su come ignorare il metodo Equals e gli operatori di uguaglianza, vedere Linee guida per l'implementazione del metodo Equals e dell'operatore di uguaglianza.
Come esaminare un avviso
Per un esempio di implementazione degli operatori Equals e di uguaglianza, vedere la regola di analisi del codice CA1815: Eseguire l'override di Equals e dell'operatore "uguale a" sui tipi di valore