Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
| 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 ==.