Avviso del compilatore (livello 3) CS1718

Confronto effettuato con la stessa variabile. Si intendeva confrontare qualcos'altro?

Per eseguire il confronto con un altro elemento, correggere l'istruzione.

Nel caso fosse necessario verificare la restituzione del valore true o false usare istruzioni come if (a == a) (true) o if (a < a) (false). È preferibile usare if (true) o if (false) per i due motivi seguenti:

  • È più semplice e conciso.

  • Consente di evitare confusione: una nuova funzionalità di C# 2.0 consiste nei tipi valore null , analoghi al valore null usato in T-SQL, il linguaggio di programmazione per SQL Server. Gli sviluppatori esperti in T-SQL potrebbero avere dubbi sull’effetto dei tipi valore che ammettono i valori Null sulle espressioni come if (a == a) a causa dell’utilizzo di logica ternaria in T-SQL. Usando la parola chiave true o false, si evitano eventuali fraintendimenti.

Esempio

Il codice seguente genera l'errore CS1718.

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