Generieren von Gleichheits- und GetHashCode-Methodenüberschreibungen in Visual Studio

Diese Codegenerierung gilt für:

  • C#

Was: Hiermit können Sie Equals - und GetHashCode-Methoden generieren.

Wann: Generieren Sie diese Außerkraftsetzungen, wenn Sie über einen Typ verfügen, der von einem oder mehreren Feldern verglichen werden soll, anstatt nach Objektspeicherort im Arbeitsspeicher.

Warum:

  • Wenn Sie einen Werttyp implementieren, sollten Sie die Equals-Methode außer Kraft setzen. Wenn Sie dies tun, können Sie eine höhere Leistung über die Standardimplementierung der Equals-Methode für ValueType erzielen.

  • Wenn Sie einen Verweistyp implementieren, sollten Sie erwägen, die Equals-Methode außer Kraft zu setzen, wenn der Typ wie ein Basistyp aussieht, z. B. Point, String, BigNumber usw.

  • Überschreiben Sie die GetHashCode-Methode , damit ein Typ in einer Hashtabelle ordnungsgemäß funktioniert. Weitere Anleitungen zu Gleichheitsoperatoren.

Vorgehensweise

  1. Platzieren Sie den Cursor an einer beliebigen Stelle in der Zeile der Typdeklaration.

    public class ImaginaryNumber
    {
        public double RealNumber { get; set; }
        public double ImaginaryUnit { get; set; }
    }
    

    Ihr Code sollte dem folgenden Screenshot ähneln:

    Screenshot des hervorgehobenen Codes, auf den die generierte Methode angewendet werden soll

    Tipp

    Doppelklicken Sie nicht auf den Namen des Typs, oder die Menüoption ist nicht verfügbar. Platzieren Sie einfach den Cursor an einer beliebigen Stelle in der Zeile.

  2. Wählen Sie als Nächstes eine der folgenden Aktionen aus:

    • Drücken Sie die Strg-Taste+, um das Menü Schnellaktionen und Refactorings aufzurufen.

    • Klicken Sie mit der rechten Maustaste, und wählen Sie das Menü Schnellaktionen und Umgestaltungen aus.

    • Klicken Sie auf den Screenshot des Symbols , das am linken Rand angezeigt wird.

  3. Wählen Sie im Dropdownmenü " Gleich(Objekt) generieren" oder "Gleich generieren" und "GetHashCode" aus.

    Screenshot des Dropdownmenüs

  4. Wählen Sie im Dialogfeld " Mitglieder auswählen" die Elemente aus, für die Sie die Methoden generieren möchten:

    Dialogfeld

    Tipp

    Sie können auch auswählen, dass Operatoren aus diesem Dialogfeld generiert werden sollen, indem Sie das Kontrollkästchen am unteren Rand des Dialogfelds verwenden.

    Die Equals Methoden und GetHashCode Methoden werden mit Standardimplementierungen generiert, wie im folgenden Code gezeigt:

    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);
        }
    }
    

    Ihr Code sollte dem folgenden Screenshot ähneln:

    Screenshot des Ergebnisses der generierten Methode

Siehe auch