int x;
if (Q())
x = 123;
if (R())
Console.WriteLine(x); // illegal
int x;
if (Q())
x = 123;
if (false)
Console.WriteLine(x); // legal!!
前者が「割り当てられていないローカル変数を使用して」コンパイル時例外をスローしているのに、なぜ2番目のものが有効なのかわかりますか?