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. ==
.