Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 3) CS1718

Porównanie z tą samą zmienną; czy chodziło ci o porównanie czegoś innego?

Jeśli chcesz porównać coś innego, popraw instrukcję .

Ale inną możliwością jest to, że testowano pod kątem wartości true lub false i robiliśmy to za pomocą instrukcji, takich jak if (a == a) (true) lub if (a < a) (false). Lepiej użyć if (true) metody lub if (false), z następujących dwóch powodów:

  • To prostsze: zawsze jest jaśniejsze po prostu powiedzieć, co masz na myśli.

  • Pomaga uniknąć nieporozumień: nowa funkcja języka C# 2.0 to typy wartości dopuszczających wartość null, które są analogiczne do wartości null w języku T-SQL, języku programowania używanym przez program SQL Server. Deweloperzy zaznajomieni z językiem T-SQL mogą obawiać się wpływu typów wartości dopuszczanych do wartości null w wyrażeniach, takich jak if (a == a), ze względu na użycie logikiternarnej w języku T-SQL. Jeśli używasz true polecenia lub false, unikaj tego możliwego pomylenia.

Przykład

Poniższy kod generuje ostrzeżenie CS1718.

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