CA2013: Verwenden Sie ReferenceEquals nicht mit Werttypen.

Eigenschaft Wert
Regel-ID CA2013
Titel Verwenden Sie ReferenceEquals nicht mit Werttypen.
Kategorie Zuverlässigkeit
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Als Warnung

Ursache

Verwenden der System.Object.ReferenceEquals-Methode, um einen oder mehrere Werttypen auf Gleichheit zu testen.

Regelbeschreibung

Wenn objA und objB beim Vergleichen von Werten mithilfe von ReferenceEquals Werttypen sind, werden sie geschachtelt, bevor sie an die ReferenceEquals-Methode übergeben werden. Dies bedeutet, dass die ReferenceEquals-Methode selbst dann „false“ zurückgibt, wenn objA und objB dieselbe Instanz eines Werttyps darstellen, wie das folgende Beispiel zeigt.

Behandeln von Verstößen

Um den Verstoß zu beheben, ersetzen Sie ihn durch eine geeignetere Gleichheitsüberprüfung, z. B. ==.


    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

Wann sollten Warnungen unterdrückt werden?

Es ist nicht sicher, eine Warnung, die auf dieser Regel basiert, zu unterdrücken. Es wird empfohlen, den geeigneteren Gleichheitsoperator zu verwenden, z. B. ==.

Siehe auch