Megosztás a következőn keresztül:


CA1067: A felülbírálás egyenlő az IEquatable megvalósításakor

Tulajdonság Érték
Szabályazonosító CA1067
Cím A felülbírálás egyenlő az IEquatable megvalósításakor
Kategória Design
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

Egy típus implementálja IEquatable<T>, de nem bírálja felül Equals a metódust.

Szabály leírása

A típus implementáló IEquatable<T> felülete azt jelzi, hogy támogatja a típus két példányának összehasonlítását az egyenlőség érdekében. Felül kell bírálnia az alaposztály implementációit Equals és GetHashCode() a metódusokat is, hogy azok viselkedése összhangban legyen az System.IEquatable<T>.Equals implementációval. See here for more details.

A Equals megvalósításnak olyan eredményeket kell visszaadnia, amelyek összhangban vannak a megvalósítással System.IEquatable<T>.Equals .

Szabálysértések kijavítása

A szabálysértés kijavításához felülbírálja Equals és implementálja azt a System.IEquatable<T>.Equals megvalósítás meghívásával. A következő két kódrészlet például a szabály megsértését és a hiba elhárítását mutatja be:

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

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa le a szabály megsértését.

Kapcsolódó információk