Methode Equals en GetHashCode-onderdrukkingen genereren in Visual Studio

Deze codegeneratie is van toepassing op:

  • C#

Wat: Hiermee kunt u equals - en GetHashCode-methoden genereren.

Wanneer: Genereer deze onderdrukkingen wanneer u een type hebt dat moet worden vergeleken met een of meer velden, in plaats van op objectlocatie in het geheugen.

Waarom:

  • Als u een waardetype implementeert, moet u overwegen de methode Equals te overschrijven. U kunt betere prestaties krijgen dan de standaard implementatie van de methode Equals op ValueType wanneer u dit doet.

  • Als u een verwijzingstype implementeert, kunt u overwegen om de methode Equals te overschrijven als uw type eruitziet als een basistype, zoals Punt, Tekenreeks, BigNumber, enzovoort.

  • Overschrijf de Methode GetHashCode om toe te staan dat een type correct werkt in een hash-tabel. Lees meer informatie over gelijkheidsoperators.

Handleiding

  1. Plaats de cursor ergens op de regel van uw typedeclaratie.

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

    Uw code moet er ongeveer uitzien als in de volgende schermopname:

    Schermopname van gemarkeerde code waarop de gegenereerde methode moet worden toegepast

    Aanbeveling

    Dubbelklik niet op de naam van het type of de menuoptie is niet beschikbaar. Plaats de cursor ergens op de lijn.

  2. Kies vervolgens een van de volgende acties:

    • Druk op Ctrl+. om het menu Snelle acties en Refactorings te activeren.

    • Klik met de rechtermuisknop en selecteer het menu Snelle acties en refactorings .

    • Klik op de schermafbeelding van het pictogram Snelle acties in Visual Studio-pictogram dat in de linkermarge wordt weergegeven.

  3. Selecteer in de vervolgkeuzelijst Generate Equals(object) of Generate Equals en GetHashCode.

    Schermopname van de vervolgkeuzelijst Onderdrukkingen genereren

  4. Selecteer in het dialoogvenster Leden kiezen de leden waarvoor u de methoden wilt genereren:

    Dialoogvenster Onderdrukkingen genereren

    Aanbeveling

    U kunt er ook voor kiezen om operators uit dit dialoogvenster te genereren met behulp van het selectievakje onderaan het dialoogvenster.

    De Equals en GetHashCode methoden worden gegenereerd met standaard implementaties, zoals wordt weergegeven in de volgende code:

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

    Uw code moet er ongeveer uitzien als in de volgende schermopname:

    Schermopname van het resultaat van de gegenereerde methode

Zie ook