Share via


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

Zie ook