Condividi tramite


Istruzioni per l'implementazione del metodo Equals e dell'operatore di uguaglianza (==)

Le istruzioni per l'implementazione del metodo Equals e dell'operatore di uguaglianza (==) sono definite dalle regole riportate di seguito.

  • Implementare il metodo GetHashCode ogni volta che si implementa il metodo Equals. In questo modo viene mantenuta la sincronizzazione di Equals e GetHashCode.
  • Eseguire l'override del metodo Equals ogni volta che si implementa l'operatore == e fare in modo che effettuino la stessa operazione. In questo modo il codice dell'infrastruttura, ad esempio Hashtable e ArrayList, che utilizza il metodo Equals, funziona allo stesso modo del codice utente scritto utilizzando l'operatore ==.
  • Eseguire l'override del metodo Equals ogni volta che si implementa l'interfaccia IComparable.
  • Prendere in considerazione la possibilità di implementare l'overload degli operatori per gli operatori uguale a (==), diverso da (!=), minore di (<) e maggiore di (>) quando si implementa IComparable.
  • Non generare eccezioni dai metodi Equals o GetHashCode o dall'operatore di uguaglianza (==).

Per informazioni correlate sul metodo Equals, vedere Implementazione del metodo Equals.

Implementazione dell'operatore di uguaglianza (==) sui tipi di valore

Nella maggior parte dei linguaggi di programmazione non esiste un'implementazione predefinita dell'operatore di uguaglianza (==) per i tipi di valore. Eseguire quindi l'overload dell'operatore == ogni volta che l'uguaglianza è significativa.

Prendere in considerazione la possibilità di implementare il metodo Equals sui tipi di valore, in quanto l'implementazione predefinita su System.ValueType non verrà eseguita altrettanto correttamente dell'implementazione personalizzata.

Implementare l'operatore == ogni volta che si esegue l'override del metodo Equals.

Implementazione dell'operatore di uguaglianza (==) sui tipi di riferimento

La maggior parte dei linguaggi di programmazione fornisce un'implementazione predefinita dell'operatore di uguaglianza (==) per i tipi di riferimento. Prestare quindi attenzione durante l'implementazione dell'operatore == sui tipi di riferimento. La maggior parte dei tipi di riferimento, anche quelli che implementano il metodo Equals, non deve eseguire l'override dell'operatore ==.

Eseguire l'override dell'operatore == se il tipo è un tipo base, ad esempio Point, String, BigNumber e così via. Ogni volta che si prende in considerazione la possibilità di eseguire l'override degli operatori di aggiunta (+) e sottrazione (-), valutare sempre di eseguire l'override dell'operatore di uguaglianza (==).

Vedere anche

Istruzioni di progettazione per gli sviluppatori di librerie di classi | Implementazione del metodo Equals | Metodo Object.Equals