为什么必须在 if 语句的范围之外声明变量才能存在?
例如,以下代码无法编译:
DateTime? myDate;
if (myDate != null)
{
DateTime runDate = DateTime.Now;
}
else
{
DateTime runDate = DateTime.Now.AddDays(1);
}
string foo = runDate.toString();
我理解问题是我需要runDate
在 if 语句之前声明,但是为什么呢?如果编译器确实允许这段代码工作,它真的与之前声明它有什么不同吗?或者更好的说法是,为什么从事语言/框架工作的开发人员决定这样做?