CA2013: Ne használja a ReferenceEqualst értéktípusokkal
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2013 |
Cím | Ne használja a ReferenceEqualst értéktípusokkal |
Kategória | Megbízhatóság |
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 | Figyelmeztetésként |
Ok
Az egyenlőség egy vagy több értéktípusának tesztelésére szolgáló módszer használata System.Object.ReferenceEquals .
Szabály leírása
Ha az objA és az objB értéktípussal ReferenceEqualshasonlítja össze az értékeket, a rendszer a metódusnak ReferenceEquals való továbbítás előtt be van jelölve. Ez azt jelenti, hogy még ha az objA és az objB is ugyanazt az értéktípus-példányt képviseli, a ReferenceEquals metódus ennek ellenére hamis értéket ad vissza, ahogy az alábbi példa is mutatja.
Szabálysértések kijavítása
A szabálysértés kijavításához cserélje le egy megfelelőbb egyenlőségi ellenőrzésre, például ==
.
int int1 = 1, int2 = 1;
// Violation occurs, returns false.
Console.WriteLine(Object.ReferenceEquals(int1, int2)); // false
// Use appropriate equality operator or method instead
Console.WriteLine(int1 == int2); // true
Console.WriteLine(object.Equals(int1, int2)); // true
Mikor kell letiltani a figyelmeztetéseket?
A szabály figyelmeztetésének mellőzése nem biztonságos. Javasoljuk, hogy használja a megfelelőbb egyenlőségi operátort, például ==
.