Partekatu honen bidez:


CA2013: No usar ReferenceEquals con tipos de valor

Propiedad Valor
Identificador de la regla CA2013
Título No usar ReferenceEquals con tipos de valor
Categoría Confiabilidad
La corrección interrumpe o no interrumpe Sin interrupción
Habilitado de forma predeterminada en .NET 10 Como advertencia
Idiomas aplicables C# y Visual Basic

Causa

Usar el método System.Object.ReferenceEquals para comprobar la igualdad de uno o varios tipos de valor.

Descripción de la regla

Al comparar valores mediante ReferenceEquals, si objA y objB son tipos de valor, son encapsulados antes de que se pasen al método ReferenceEquals. Esto significa que, aunque objA y objB representen la misma instancia de un tipo de valor, el método ReferenceEquals devuelve false, como se muestra en el ejemplo siguiente.

Cómo corregir infracciones

Para corregir la infracción, reemplácela por una comprobación de igualdad más adecuada, como ==.


    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

Cuándo suprimir las advertencias

No es seguro suprimir una advertencia de esta regla. Se recomienda usar el operador de igualdad más adecuado, como ==.

Consulte también