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ó | 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 10-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 ==.