Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
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:
Aanbeveling
Dubbelklik niet op de naam van het type of de menuoptie is niet beschikbaar. Plaats de cursor ergens op de lijn.
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
dat in de linkermarge wordt weergegeven.
Selecteer in de vervolgkeuzelijst Generate Equals(object) of Generate Equals en GetHashCode.
Selecteer in het dialoogvenster Leden kiezen de leden waarvoor u de methoden wilt genereren:
Aanbeveling
U kunt er ook voor kiezen om operators uit dit dialoogvenster te genereren met behulp van het selectievakje onderaan het dialoogvenster.
De
EqualsenGetHashCodemethoden 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: