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,我不知道它有义务使用“默认值: