c# – 为什么SWITCH和IF在Variable assignement方面有所不同
发布时间:2020-12-15 19:46:47 所属栏目:百科 来源:网络整理
导读:我目前大多数时候都在使用IF语句,但我越来越喜欢switch case语句,因为有时候它更具可读性. 但我想知道为什么编译器不理解switch和if. 一个例子: bool decision = false;IEnumerablestring toBeAssigned;if (decision){ toBeAssigned = getValuesA();}else{
|
我目前大多数时候都在使用IF语句,但我越来越喜欢switch case语句,因为有时候它更具可读性.
但我想知道为什么编译器不理解switch和if. 一个例子: bool decision = false;
IEnumerable<string> toBeAssigned;
if (decision)
{
toBeAssigned = getValuesA();
}
else
{
toBeAssigned = getValuesB();
}
foreach (var elem in toBeAssigned )
{
// do something
}
这应该编译好,并且toBeAssigned可以在foreach中使用而没有问题. 但: bool decision = false;
IEnumerable<string> toBeAssigned;
switch(decision)
{
case true:
toBeAssigned = getValuesA();
break;
case false:
toBeAssigned = getValuesB();
break;
}
foreach (var elem in toBeAssigned )
{
// do something
}
不为我编译 – 编译器抱怨从未分配toBeAssigned的值. 解决方法
您在switch语句中缺少默认大小写.如果你写了:
if (decision)
{
toBeAssigned = getValuesA();
}
else if (!decision)
{
toBeAssigned = getValuesB();
}
发生这种情况,因为编译器不知道有多少情况,并且总是假设你没有全部覆盖它们,除非你有一个默认语句,基本上是“如果所有其他情况都不满足,就这样做”.对于if和else也是如此:if(…)和if if(…)是你的“case:”而else是你的“默认:” (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
