CA2013: ReferenceEquals niet gebruiken met waardetypen
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA2013 |
Titel | ReferenceEquals met waardetypen niet gebruiken |
Categorie | Betrouwbaarheid |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als waarschuwing |
Oorzaak
Methode System.Object.ReferenceEquals gebruiken om een of meer waardetypen voor gelijkheid te testen.
Beschrijving van regel
Wanneer u waarden vergelijkt met behulp van ReferenceEquals, als objA en objB waardetypen zijn, worden ze in het vak geplaatst voordat ze worden doorgegeven aan de ReferenceEquals methode. Dit betekent dat, zelfs als zowel objA als objB hetzelfde exemplaar van een waardetype vertegenwoordigen, de ReferenceEquals methode toch onwaar retourneert, zoals in het volgende voorbeeld wordt weergegeven.
Schendingen oplossen
Als u de schending wilt oplossen, vervangt u deze door een meer geschikte gelijkheidscontrole, zoals ==
.
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
Wanneer waarschuwingen onderdrukken
Het is niet veilig om een waarschuwing van deze regel te onderdrukken. We raden u aan de meer geschikte gelijkheidsoperator te gebruiken, zoals ==
.