Condividi tramite


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