Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigenschaft | Wert |
|---|---|
| Regel-ID | CA2013 |
| Titel | Verwenden Sie ReferenceEquals nicht mit Werttypen. |
| Kategorie | Zuverlässigkeit |
| Fix führt zu Unterbrechungen oder bleibt funktionsfähig | Untrennbar |
| Standardmäßig in .NET 10 aktiviert | Als Warnung |
| Anwendbare Sprachen | C# und Visual Basic |
Ursache
Verwenden der System.Object.ReferenceEquals-Methode, um einen oder mehrere Werttypen auf Gleichheit zu testen.
Regelbeschreibung
Wenn Werte mithilfe von ReferenceEquals verglichen werden und objA und objB Werttypen sind, werden sie geboxt, 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.
So beheben Sie Verstöße
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. ==.