Delen via


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 8 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.

Zie ook