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 | Az Equals felülírása az IEquatable megvalósításakor |
| Kategória | Tervezés |
| A javítás romboló vagy nem romboló | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Javaslatként |
| Alkalmazandó nyelvek | C# és Visual Basic |
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 Equals és GetHashCode() metódusok implementációit is, hogy e metódusok 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.