存在するために変数を if ステートメントのスコープ外で宣言しなければならないのはなぜですか?
たとえば、次のコードはコンパイルされません。
DateTime? myDate;
if (myDate != null)
{
DateTime runDate = DateTime.Now;
}
else
{
DateTime runDate = DateTime.Now.AddDays(1);
}
string foo = runDate.toString();
問題は if ステートメントの前に宣言する必要があることだと理解していますrunDate
が、なぜですか? コンパイラがこのコードの一部を機能させた場合、以前に宣言した場合と実際に違いはありますか? または、もっといい言い方をすれば、言語/フレームワークに取り組んだ開発者はなぜこのようにすることにしたのですか?