Nik*_*wal 3 .net c# boolean switch-statement
我的问题不是关于如何解决这个错误(我已经解决了)但是为什么这个错误带有布尔值.
我的功能是
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;
}
Run Code Online (Sandbox Code Playgroud)
错误是Use of unassigned local variable 'str'.布尔只能是真或假.因此它将填充str在任何一种情况下.那么为什么这个错误?
此外,如果在真假情况下我添加一个default案例,这个错误就消失了,但是仍然可以将bool与真假区分开来?
为什么这个奇怪的行为与bool变量?
在布尔变量上写一个switch语句对我来说似乎有些讨厌.为什么不使用条件运算符(?:):
private string NumberToString(int number, bool flag)
{
return flag ? number.ToString("00") : number.ToString("0000");
}
Run Code Online (Sandbox Code Playgroud)
代码看起来更简洁,你不需要局部变量.
但回到你的问题为什么你的代码不编译=>这是因为变量必须总是被分配,并且这个赋值不应该发生在条件语句中.
您得到的错误是关于string变量而不是 boolean可能的值.
事实上,有没有办法说的没有人cases来看,是一个真正的(在这种情况下),但编译器不会在分析代码走这么远.它只是看起来不分配,并在某些情况下使用并没有默认的,所以变量假设,有可能时,它仍然未分配的一些情况.
| 归档时间: |
|
| 查看次数: |
19529 次 |
| 最近记录: |