Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 | Tervez |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 9-ben | 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. További információ: Megjegyzések a megvalósítók számára.
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.