CA2013: Nepoužívejte referenceEquals s typy hodnot
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2013 |
Název | Nepoužívejte ReferenceEquals s typy hodnot |
Kategorie | Spolehlivost |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako upozornění |
Příčina
Použití System.Object.ReferenceEquals metody k otestování jednoho nebo více typů hodnot pro rovnost.
Popis pravidla
Při porovnávání hodnot pomocí ReferenceEquals, pokud objA a objB jsou typy hodnot, jsou boxovány před jejich předáním metodě ReferenceEquals . To znamená, že i když objA i objB představují stejnou instanci typu hodnoty, ReferenceEquals metoda přesto vrátí false, jak ukazuje následující příklad.
Jak opravit porušení
Chcete-li opravit porušení, nahraďte ho vhodnější kontrolou 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, například ==
.
Související pravidla
Viz také
Spolupracujte s námi na GitHubu
Zdroj tohoto obsahu najdete na GitHubu, kde můžete také vytvářet a kontrolovat problémy a žádosti o přijetí změn. Další informace najdete v našem průvodci pro přispěvatele.