gpt4 book ai didi

c# - 为什么必须在 if 语句的范围之外声明变量才能存在?

转载 作者:行者123 更新时间:2023-11-30 13:13:10 28 4
gpt4 key购买 nike

为什么必须在 if 语句范围之外声明变量才能存在?

例如,下面的代码不能编译:

DateTime? myDate;
if (myDate != null)
{
DateTime runDate = DateTime.Now;
}
else
{
DateTime runDate = DateTime.Now.AddDays(1);
}

string foo = runDate.toString();

我明白问题是我需要在 if 语句之前声明 runDate,但为什么呢?如果编译器确实允许这段代码工作,它真的与之前声明的有什么不同吗?或者用更好的措辞来说,为什么从事语言/框架开发的开发人员决定采用这种方式?

最佳答案

好吧,考虑一下这个,从你的例子中得出:

DateTime? myDate;
if (myDate != null)
{
String runDate = DateTime.Now.ToString();
}
else
{
DateTime runDate = DateTime.Now.AddDays(1);
}

string foo = runDate.ToString();

根据您的建议,runDate 的类型(当分配了 foo 时)在编译时是未知的,它可以是 stringDateTime。这在静态类型语言中是不允许的。

关于c# - 为什么必须在 if 语句的范围之外声明变量才能存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17889714/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com