Sdílet prostřednictvím


Compilerwarnung (Stufe 3) CS1718

Aktualisiert: November 2007

Fehlermeldung

Der Vergleich erfolgte mit der gleichen Variablen. Wollten Sie etwas anderes vergleichen?
Comparison made to same variable; did you mean to compare something else?

Wenn Sie beabsichtigt hatten, den Vergleich mit etwas anderem anzustellen, sollten Sie einfach die Anweisung korrigieren.

Es ist aber auch möglich, dass Sie mit Anweisungen wie if (a == a) (true) oder if (a < a) (false) auf true oder false geprüft haben. Geben Sie stattdessen einfach if (true) oder if (false) an. Dafür gibt es zwei Gründe:

  • Es ist einfacher. Es ist immer klarer, auf einfache Weise auszudrücken, was Sie meinen.

  • Es trägt dazu bei, Verwirrungen zu vermeiden: ein neues Feature von C# 2.0 sind Werttypen, die NULL zulassen, was dem Wert null in T-SQL entspricht, der von SQL Server verwendeten Programmiersprache. Mit T-SQL vertraute Entwickler finden möglicherweise aufgrund der Verwendung ternärer Logik in T-SQL die Auswirkungen von für NULL zugelassenen Typen in Ausdrücken wie beispielsweise if (a == a) problematisch. Wenn Sie true oder falseverwenden, vermeiden Sie diese potentielle Verwirrung.

Beispiel

Durch folgenden Code wird Warnung CS1718 generiert.

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