CA2013: Nepoužívejte ReferenceEquals s typy hodnot

Hodnota
ID pravidla CA2013
Kategorie Spolehlivost
Oprava je rozbíjení nebo nerušení Nenarušující

Příčina

Použití System.Object.ReferenceEquals metody k otestování rovnosti jednoho nebo více typů hodnot

Popis pravidla

Pokud jsou objektA a objB typy hodnot při porovnávání hodnot pomocí , jsou před jejich předány ReferenceEquals metodě ReferenceEquals pole. To znamená, že i když objektA i objB představují stejnou instanci typu hodnoty, metoda přesto vrátí hodnotu false, jak ukazuje ReferenceEquals následující příklad.

Jak opravit porušení

Chcete-li toto porušení vyřešit, nahraďte ho vhodnější kontrolu rovnosti, například == .


    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

Kdy potlačit upozornění

Není bezpečné potlačit upozornění z tohoto pravidla. Doporučujeme použít vhodnější operátor rovnosti, jako je == .

Viz také