Operatori di uguaglianza
Nota
Questo contenuto è ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Tale edizione è stata pubblicata nel 2008 e il libro è stato interamente revisionato nella terza edizione. Alcune delle informazioni contenute in questa pagina potrebbero non essere aggiornate.
In questa sezione viene illustrato l'overload degli operatori di uguaglianza e fa riferimento a operator==
e operator!=
come operatori di uguaglianza.
❌ NON eseguire l'overload di uno degli operatori di uguaglianza e non dell'altro.
✔️ ASSICURARSI che Object.Equals e gli operatori di uguaglianza abbiano esattamente la stessa semantica e caratteristiche di prestazioni simili.
Spesso ciò significa che è necessario eseguire l'override di Object.Equals
quando gli operatori di uguaglianza vengono sottoposti a overload.
❌ EVITARE di generare eccezioni dagli operatori di uguaglianza.
Ad esempio, restituisce false se uno degli argomenti è null anziché generare NullReferenceException
.
Operatori di uguaglianza per i tipi valore
✔️ ESEGUIRE l'overload degli operatori di uguaglianza sui tipi valore, se l'uguaglianza è significativa.
Nella maggior parte dei linguaggi di programmazione non esiste alcuna implementazione predefinita di operator==
per i tipi valore.
Operatori di uguaglianza nei tipi riferimento
❌ EVITARE l'overload degli operatori di uguaglianza sui tipi riferimento mutabili.
Molti linguaggi hanno operatori di uguaglianza predefiniti per i tipi riferimento. In genere gli operatori predefiniti implementano l'uguaglianza dei riferimenti e molti sviluppatori sono sorpresi quando il comportamento predefinito viene modificato in corrispondenza dell'uguaglianza di valori.
Questo problema è mitigato per i tipi riferimento non modificabili perché l'immutabilità rende molto più difficile notare la differenza tra l’uguaglianza dei riferimenti e l’uguaglianza dei valori.
❌ EVITARE l'overload degli operatori di uguaglianza sui tipi riferimento se l'implementazione sarebbe notevolmente più lenta rispetto a quella di uguaglianza del riferimento.
Parti protette da copyright © 2005, 2009 Microsoft Corporation. Tutti i diritti sono riservati.
Ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2a edizione di Krzysztof Cwalina and Brad Abrams, pubblicato il 22 ottobre 2008 da Addison-Wesley Professional nella collana Microsoft Windows Development Series.