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ó szabályok
Kapcsolódó információk
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: