Ostrzeżenie CA2013: Nie używaj właściwości ReferenceEquals z typami wartości
Reguła analizatora kodu platformy .NET CA2013 jest domyślnie włączona, począwszy od platformy .NET 5. Tworzy ostrzeżenie kompilacji dla dowolnego kodu, w którym ReferenceEquals(Object, Object) jest używany do porównywania co najmniej jednego typu wartości pod kątem równości.
Opis zmiany
Począwszy od platformy .NET 5, zestaw .NET SDK zawiera analizatory kodu źródłowego platformy .NET. Kilka z tych reguł jest domyślnie włączonych, w tym CA2013. Jeśli projekt zawiera kod, który narusza tę regułę i jest skonfigurowany do traktowania ostrzeżeń jako błędów, ta zmiana może spowodować przerwanie kompilacji.
Reguła CA2013 znajduje wystąpienia, w których ReferenceEquals(Object, Object) jest używana do porównywania co najmniej jednego typu wartości pod kątem równości. Porównywanie typów wartości pod kątem równości w ten sposób może prowadzić do nieprawidłowych wyników, ponieważ wartości są w polu przed ich porównaniem. ReferenceEquals(Object, Object)false
funkcja zwróci wartość nawet wtedy, gdy porównywane wartości reprezentują to samo wystąpienie typu wartości.
Wprowadzona wersja
5,0
Zalecana akcja
Zmień kod tak, aby używał odpowiedniego operatora równości, takiego jak
==
. Nie należy pomijać tego ostrzeżenia.Aby całkowicie wyłączyć analizę kodu, ustaw wartość
EnableNETAnalyzers
nafalse
w pliku projektu. Aby uzyskać więcej informacji, zobacz EnableNETAnalyzers.
Dotyczy interfejsów API
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla