Share via


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

Le linee guida 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 di uguaglianza (==) e assegnare a entrambi la stessa funzione. In questo modo il codice dell'infrastruttura, ad esempio Hashtable o ArrayList, che utilizza il metodo Equals, funziona allo stesso modo del codice utente scritto utilizzando l'operatore di uguaglianza.

  • Eseguire l'override del metodo Equals ogni volta che si implementa IComparable.

  • Si consiglia di implementare l'overload dell'operatore 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

La maggior parte dei linguaggi di programmazione non prevede un'implementazione predefinita dell'operatore di uguaglianza (==) per i tipi di valore. Eseguire quindi l'overload dell'operatore di uguaglianza (==) 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 di uguaglianza (==) 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 di uguaglianza (==) sui tipi di riferimento. La maggior parte dei tipi di riferimento, anche quelli che implementano il metodo Equals, non devono eseguire l'override dell'operatore di uguaglianza (==).

Eseguire l'override dell'operatore di uguaglianza (==) se il tipo è un tipo base quale Point, String, BigNumber e così via. Ogni volta che si intende eseguire l'override degli operatori di aggiunta (+) e sottrazione (-), valutare sempre l'opportunità di eseguire anche l'override dell'operatore di uguaglianza (==).

Portions Copyright 2005 Microsoft Corporation. Tutti i diritti riservati.

Portions Copyright Addison-Wesley Corporation. Tutti i diritti riservati.

Per ulteriori informazioni sulle linee guida di progettazione, vedere “le linee guida di progettazione di Framework: Idiomi convenzioni, e modelli per libro raccolte riutilizzabili .NET„ di Krzysztof Cwalina e brad Abrams, emessi da Addison-Wesley, 2005.

Vedere anche

Riferimenti

Implementazione del metodo Equals

Object.Equals

Concetti

Linee guida di utilizzo

Altre risorse

Linee guida di progettazione per lo sviluppo di librerie di classi