首页 > 解决方案 > 有人能告诉我为什么 (return DayName;) 会导致错误,因为它是一个未分配的局部变量吗?

问题描述

这是我的代码:

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;
        }
    }
}

标签: c#error-handling

解决方案


为了使用变量的值,您需要确保无论执行采用哪条路径,您的变量都会收到一个值。实际上,您不能保证,因为执行可能会采用一条路径,并且您的变量不会收到任何值。那是当它不进入开关盒时,这是一个可选路径。

此外,此验证不考虑语义。例子:

int a;
int b = 1;

if (b == 1) {
    a = 2;
}

return a; // This causes an error

虽然执行总是会进入 if,因为b总是等于 1,但是 ifs 总是被认为是一个可选的代码块,所以不能保证a会及时为return.


推荐阅读