Condividi tramite


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.

Vedi anche