Udostępnij za pośrednictwem


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

  • 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 na false w pliku projektu. Aby uzyskać więcej informacji, zobacz EnableNETAnalyzers.

Dotyczy interfejsów API