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,
请问这是什么原理?
这里的赋值指的是需要为变量初始化,进行明确的赋值。
Switch或if分支语句不能保证在任何情况下给出赋值,而且编译器无法预先推导与否。