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