C# 有人能告诉我为什么(return DayName;)会导致错误吗;是一个未赋值的局部变量吗?
这是我的密码:C# 有人能告诉我为什么(return DayName;)会导致错误吗;是一个未赋值的局部变量吗?,c#,error-handling,C#,Error Handling,这是我的密码: namespace Hello_World { class Program { static void Main(string[] args) { Console.WriteLine(GetDay(0)); Console.ReadLine(); } static string GetDay(int DayNum) {
namespace Hello_World
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetDay(0));
Console.ReadLine();
}
static string GetDay(int DayNum)
{
string DayName;
switch (DayNum)
{
case 0:
DayName = "Sunday";
break;
}
return DayName;
}
}
}
为了使用变量的值,您需要确保,无论执行采取何种路径,您的变量都将收到一个值。事实上,您没有保证这一点,因为执行可能会有一条路径,而您的变量不会收到任何值。也就是说,当它不在交换机的情况下,这是一个可选的路径 此外,此验证没有考虑语义。例如:
inta;
int b=1;
如果(b==1){
a=2;
}
返回a;//这会导致错误
虽然执行将始终输入if,但由于
b
始终等于1,因此ifs始终被视为可选代码块,因此不能保证a
在返回时会有一个值string DayName=string.Empty;回答您的为什么?->因为它在声明时没有赋值。您需要在切换默认值
的情况下初始化它,或者当您声明此变量时,考虑DayNum的值何时为1,即DayNum=1
,将在DayName
中存储什么值?非常感谢@Prasadelkikikikar,我不知道它有义务使用“默认值: