Leer en inglés

Compartir a través de


Advertencia del compilador (nivel 3) CS1718

La comparación se ha hecho con la misma variable. ¿Quería comparar otro elemento?

Para realizar la comparación con otro elemento, solo tendría que corregir la instrucción.

Otra posibilidad sería que estuviese realizando pruebas de verdadero o falso con instrucciones como if (a == a) (true) o if (a < a) (false). Es mejor usar if (true) o if (false), por las dos razones siguientes:

  • Es más fácil: siempre resulta más claro decir sencillamente lo que se quiere decir.

  • Ayuda a evitar confusiones: una nueva característica de C# 2.0 son los tipos de valor que aceptan valores NULL, que son similares al valor null en T-SQL, el lenguaje de programación que se usa en SQL Server. Los programadores familiarizados con T-SQL podrían tener dudas sobre el efecto de los tipos de valores que aceptan valores NULL en expresiones como if (a == a), debido al uso de la lógica ternaria en T-SQL. Si usa true o false, evita esta posible confusión.

Ejemplo

El código siguiente genera la advertencia CS1718.

// CS1718.cs  
using System;  
public class Tester
{  
    public static void Main()
    {
        int i = 0;  
        if (i == i) { // CS1718.cs  
        //if (true) {
            i++;  
        }  
    }  
}