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