Avviso del compilatore (livello 3) CS1718

Aggiornamento: novembre 2007

Messaggio di errore

Confronto effettuato con la stessa variabile. Si intendeva confrontare qualcos'altro?
Comparison made to same variable; did you mean to compare something else?

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

È tuttavia possibile che si desideri verificare la restituzione del valore true o false e, a questo scopo, si utilizzino istruzioni come if (a == a) (true) o if (a < a) (false). In questo caso, è preferibile scrivere if (true) o if (false) per due motivi:

  • È più semplice e conciso.

  • Consente di evitare confusione: una nuova funzionalità di C# 2.0 consiste nei tipi di valore nullable, analoghi al valore null utilizzato in T-SQL, il linguaggio di programmazione per SQL Server. L'effetto dei tipi nullable su espressioni come if (a == a) potrebbe confondere gli sviluppatori esperti in T-SQL, perché questo linguaggio si basa sulla logica ternaria. Utilizzando la parola chiave true o false, si evitano eventuali fraintendimenti.

Esempio

Il seguente codice di esempio genera l'avviso CS1718.

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