CA1067: Onderdrukking is gelijk aan bij het implementeren van IEquatable
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1067 |
Titel | Onderdrukking is gelijk aan bij het implementeren van IEquatable |
Categorie | Ontwerpen |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Oorzaak
Een type implementeert IEquatable<T>, maar overschrijft Equals de methode niet.
Beschrijving van regel
Een interface voor het implementeren IEquatable<T> van een type geeft aan dat het ondersteuning biedt voor het vergelijken van twee exemplaren van het type voor gelijkheid. U moet ook de basisklasse-implementaties van Equals en GetHashCode() methoden overschrijven, zodat hun gedrag consistent is met die van de System.IEquatable<T>.Equals implementatie. Klik hier voor meer informatie.
Uw Equals implementatie moet resultaten retourneren die consistent zijn met System.IEquatable<T>.Equals de implementatie.
Schendingen oplossen
Als u een schending wilt oplossen, overschrijft Equals en implementeert u deze door de System.IEquatable<T>.Equals implementatie aan te roepen. In de volgende twee codefragmenten ziet u bijvoorbeeld een schending van de regel en hoe u deze kunt oplossen:
using System;
public struct S : IEquatable<S>
{
private readonly int _value;
public S(int f)
{
_value = f;
}
public bool Equals(S other)
=> _value == other._value;
}
using System;
public struct S : IEquatable<S>
{
private readonly int _value;
public S(int f)
{
_value = f;
}
public bool Equals(S other)
=> _value == other._value;
public override bool Equals(object obj)
=> obj is S objS && Equals(objS);
public override int GetHashCode()
=> _value.GetHashCode();
}
Wanneer waarschuwingen onderdrukken
Schendingen van deze regel niet onderdrukken.