【发布时间】:2012-06-21 07:30:36
【问题描述】:
我的问题不是关于如何解决这个错误(我已经解决了),而是为什么这个错误带有布尔值。
我的功能是
private string NumberToString(int number, bool flag)
{
string str;
switch(flag)
{
case true:
str = number.ToString("00");
break;
case false:
str = number.ToString("0000");
break;
}
return str;
}
错误是Use of unassigned local variable 'str'。 Bool 只能取真或假。所以无论哪种情况,它都会填充str。那为什么会出现这个错误呢?
此外,如果与真假案例一起添加default 案例,则此错误消失了,但是除了真假之外,布尔值还能保持什么?
为什么布尔变量会出现这种奇怪的行为?
【问题讨论】:
-
我认为编译器在检查
switch语句中的明确赋值时不会考虑类型的可能值。换句话说,如果flag是int并且您有 4,294,967,296 个case语句,范围从-2,147,483,648到2,147,483,647,您将得到相同的错误。 -
可能是
null我猜是bool? flag = null; -
之前问过同样的问题,现在寻找重复。
-
这是运行时错误还是编译错误或警告?试试字符串 str = "";
-
我猜编译器根本不够聪明,无法识别您在 select 语句中包含所有可能值的情况。使用 'string str = "";' 初始化 str应该有帮助。
标签: c# .net boolean switch-statement