Udostępnij za pomocą


CA2013: Nie używaj właściwości ReferenceEquals z typami wartości

Właściwości Wartość
Identyfikator reguły CA2013
Tytuł Nie używaj metody ReferenceEquals z typami wartości
Kategoria Niezawodność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 10 Jako ostrzeżenie

Przyczyna

Używanie System.Object.ReferenceEquals metody do testowania co najmniej jednego typu wartości pod kątem równości.

Opis reguły

Podczas porównywania wartości przy użyciu metody ReferenceEquals, jeśli objA i objB są typami wartości, są one w polu przed przekazaniem ReferenceEquals ich do metody . Oznacza to, że nawet jeśli zarówno objA, jak i objB reprezentują to samo wystąpienie typu wartości, ReferenceEquals metoda zwraca jednak wartość false, jak pokazano w poniższym przykładzie.

Jak naprawić naruszenia

Aby naprawić naruszenie, zastąp go bardziej odpowiednim sprawdzaniem równości, takim jak ==.


    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

Kiedy pomijać ostrzeżenia

Nie można bezpiecznie pominąć ostrzeżenia z tej reguły. Zalecamy użycie bardziej odpowiedniego operatora równości, takiego jak ==.

Zobacz też