C# int n赋值问题


int n;
n = 0;
Console.WriteLine(n);

我们都知道这种情况是没问题的。n输出等于0


int n;
int m =1;
switch (m)
            {
                case 1: n = 31; break;
    
            }




Console.WriteLine(n);

这种情况就会报错,说n没有被赋值。但是只要把开头的int n=0;改成这样的就没问了 n输出是31,

请问这是什么原理?

img

这里的赋值指的是需要为变量初始化,进行明确的赋值。
Switch或if分支语句不能保证在任何情况下给出赋值,而且编译器无法预先推导与否。