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++;
}
}
}