Generieren der Überschreibungsmethoden „Equals“ und „GetHashCode“ in Visual Studio

Diese Codegenerierung gilt für:

  • C#

Beschreibung: Ermöglicht das Generieren von Equals- und GetHashCode-Methoden.

Hintergrund: Generieren Sie diese Überschreibungsmethoden, wenn Sie einen Typ haben, der durch ein Feld oder mehrere Felder verglichen werden soll, anstelle des Objektspeicherorts im Arbeitsspeicher.

Vorteile:

  • Wenn Sie einen Werttyp implementieren, sollten Sie das Überschreiben der Equals-Methode in Erwägung ziehen. Wenn Sie dies tun, können Sie gegenüber der Standardimplementierung der Equals-Methode bei ValueType eine bessere Leistung erzielen.

  • Wenn Sie einen Verweistyp implementieren, sollten Sie erwägen, die Equals-Methode zu überschreiben, 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. Informieren Sie sich weiter über Gleichheitsoperatoren.

Vorgehensweise

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

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

    Ihr Code sollte in etwa wie auf dem folgenden Screenshot dargestellt aussehen:

    Screenshot of highlighted code on which to apply the generated method

    Tipp

    Doppelklicken Sie nicht auf den Typnamen. Andernfalls ist die Menüoption nicht verfügbar. Platzieren Sie den Cursor einfach an einer beliebigen Stelle in der Zeile.

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

    • Drücken Sie STRG+., um das Menü Schnellaktionen und Refactorings aufzurufen.

    • Führen Sie einen Rechtsklick durch, und klicken Sie auf das Menü Schnellaktionen und Refactorings.

    • Klicken Sie auf das Screenshot of the Quick Actions screwdriver icon in Visual Studio-Symbol, das am linken Rand angezeigt wird.

  3. Klicken Sie im Dropdownmenü auf „Equals(object)“ generieren oder „Equals“ und „GetHashCode“ generieren.

    Screenshot of the Generate Overrides drop-down menu

  4. Wählen Sie die Mitglieder, für die Sie die Methoden generieren wollen, im Dialogfeld Member auswählen aus:

    Generate overrides dialog

    Tipp

    In diesem Dialogfeld können Sie auch über das entsprechende Kontrollkästchen unten im Dialogfeld die Generierung von Operatoren auswählen.

    Die Equals- und die GetHashCode-Methode 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 in etwa wie auf dem folgenden Screenshot dargestellt aussehen:

    Screenshot of the result of the generated method

Siehe auch