コンパイラの警告 (レベル 3) CS1718

更新 : 2007 年 11 月

エラー メッセージ

同じ変数と比較されました。他の変数と比較しますか?

単に比較対象を間違って指定した場合は、ステートメントを正しく修正してください。

または、if (a == a) (true) や if (a < a) (false) などのステートメントで、true か false かを判定している場合も考えられます。その場合は、単に if (true) または if (false) のように記述することをお勧めします。これには 2 つの理由があります。

  • コードが簡潔になります。表現を簡潔にした方が、コードが明快になります。

  • 混乱を防ぐことができます。C# 2.0 の新機能として、null 許容値型を使用できます。これは、SQL Server で使用されているプログラミング言語 T-SQL における null 値とよく似ています。T-SQL の使用経験のある開発者が if (a == a) のような式を見ると、三項条件のロジックを想像し、null 許容型の影響について誤解を招く可能性があります。true または false を使用することにより、このような誤解を防ぐことができます。

使用例

次のコードでは、CS1718 警告が生成されます。

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