Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa generazione di codice si applica a:
- C#
Che cosa: Consente di generare metodi Equals e GetHashCode .
Quando: Generare queste sostituzioni quando si dispone di un tipo che deve essere confrontato da uno o più campi, anziché dalla posizione dell'oggetto in memoria.
Perché:
Se si implementa un tipo valore, è consigliabile eseguire l'override del metodo Equals . È possibile migliorare le prestazioni rispetto all'implementazione predefinita del metodo Equals in ValueType quando si esegue questa operazione.
Se si implementa un tipo riferimento, è consigliabile eseguire l'override del metodo Equals se il tipo è simile a un tipo di base, ad esempio Point, String, BigNumber e così via.
Eseguire l'override del metodo GetHashCode per consentire a un tipo di funzionare correttamente in una tabella hash. Altre indicazioni sugli operatori di uguaglianza.
Guida pratica
Posizionare il cursore in un punto qualsiasi sulla riga della dichiarazione di tipo.
public class ImaginaryNumber { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } }
Il codice dovrebbe essere simile allo screenshot seguente:
Suggerimento
Non fare doppio clic su seleziona il nome del tipo oppure l'opzione di menu non sarà disponibile. Posizionare il cursore da qualche parte sulla linea.
Scegliere quindi una delle azioni seguenti:
Premere CTRL+per attivare il menu Azioni rapide e refactoring.
Fare clic con il pulsante destro del mouse e selezionare il menu Azioni rapide e refactoring .
Fare clic sullo
icona visualizzata nel margine sinistro.
Nel menu a discesa selezionare Genera equals(oggetto) o Genera uguale a e GetHashCode.
Nella finestra di dialogo Seleziona membri selezionare i membri per cui si desidera generare i metodi:
Suggerimento
È anche possibile scegliere di generare operatori da questa finestra di dialogo usando la casella di controllo nella parte inferiore della finestra di dialogo.
I
Equals
metodi eGetHashCode
vengono generati con implementazioni predefinite, come illustrato nel codice seguente:public class ImaginaryNumber : IEquatable<ImaginaryNumber> { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } public override bool Equals(object obj) { return Equals(obj as ImaginaryNumber); } public bool Equals(ImaginaryNumber other) { return other != null && RealNumber == other.RealNumber && ImaginaryUnit == other.ImaginaryUnit; } public override int GetHashCode() { return HashCode.Combine(RealNumber, ImaginaryUnit); } }
Il codice dovrebbe essere simile allo screenshot seguente: