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 8-ban 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 ==.

Kapcsolódó információk