Avertissement du compilateur (niveau 3) CS1718

Mise à jour : novembre 2007

Message d'erreur

Comparaison effectuée avec la même variable ; souhaitiez-vous comparer autre chose ?
Comparison made to same variable; did you mean to compare something else?

Si vous souhaitez comparer un autre élément, il vous suffit de corriger l'instruction.

Mais une autre possibilité consiste à effectuer un test pour obtenir la valeur true ou false, à l'aide d'instructions, telles que if (a == a) (true) ou if (a < a) (false). Il est conseillé de simplement utiliser if (true) ou if (false), et ce, pour deux raisons :

  • Simplicité : il est toujours plus clair de dire simplement ce que vous souhaitez exprimer.

  • Cela aide à éviter les confusions : l'une des nouvelles fonctionnalités de C# 2.0 est l'utilisation de types valeur nullable, analogues à la valeur null présente dans T-SQL (le langage de programmation utilisé par SQL Server). Les développeurs connaissant T-SQL risquent de s'inquiéter de l'effet des types 'nullable' sur des expressions, telles que if (a == a), en raison de l'utilisation de logique ternaire dans T-SQL. L'utilisation de true ou de false permet d'éviter ce risque de confusion.

Exemple

Le code suivant génère l'avertissement CS1718.

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