私は今日これに遭遇しましたが、C#コンパイラがエラーをスローしない理由がわかりません。
Int32 x = 1;
if (x == null)
{
Console.WriteLine("What the?");
}
xがnullになる可能性があるかどうかについて私は混乱しています。特に、この割り当ては間違いなくコンパイラエラーをスローするためです。
Int32 x = null;
xがnullになる可能性はありますか、Microsoftはこのチェックをコンパイラに入れないことを決定しただけですか、それとも完全に見逃されていましたか?
更新:この記事を書くためのコードをいじった後、突然、コンパイラーは式が真になることはないという警告を出しました。今、私は本当に迷っています。オブジェクトをクラスに入れましたが、警告は消えましたが、質問が残っています。値型がnullになる可能性があります。
public class Test
{
public DateTime ADate = DateTime.Now;
public Test ()
{
Test test = new Test();
if (test.ADate == null)
{
Console.WriteLine("What the?");
}
}
}
if (1 == 2)
ます。コードパス分析を実行するのはコンパイラの仕事ではありません。それが静的分析ツールと単体テストの目的です。