C# 流程控制分支 switch 语句
switch语句非常类似于if语句,因为它也是根据测试的值来有条件地执行代码。但是,switch语句可以一 次将测试变量与多个值进行比较,而不是仅测试一个条件。这种测试仅限于离散的值,而不是像“大于X”这 样的子句,所以它的用法有点不同,但它仍是一种强大的技术。 switch语句的越本结构如下:
switch (〈testier〉)
{
case <comparisonVall>:
<code to execute if <testVar> 一一 <comparisonVall> >
break;
case <comparisonVal2>:
<code to execute if <testVar> == <comparisonVa12> >
break;
. . .
case <comp3risonVcilN>:
<code to execute if <testVar> == <comparisonValN> >
break;
default:
<code to execute if <testVar> != comparlsonVals>
break;
}
<testVar>中的值与每个值(在case语句中指定)进行比较,如果有一个匹配,就执行为该 匹配提供的语句。如果没有匹配,但有default语句,就执行default部分的代码。
执行完每个部分的代码后,还需要有另一个语句break。在执行完一个case块后,再执行第二个case语句 是非法的。
注意:
在此,C#与O+是有区别的s在C++中,可以在运行完一个case语句后,运行另一个case语句。
这里的break语句将中断switch语句的执行,而执行该结构后面的语句。
在C#代码中,还有其他方法可以防止程序流程从一个case语句转到下一个case语句。可以使用retum语 句,中断当前函数的运行,而不是仅中断switch结构的执行(详见第6章)。也可以使用goto语句(如前所述), 因为case语句实际上是在C#代码中定义的标签。例如:
switch (<testVar>)
{
case <comparisonVall>:
<code to execute if <testVar> == <comparisonVa11> >
goto case <comparisonVa12> 7
case <comparisonJ:
<code to execute if <testVar> == <comparisonVal2> >
break;
. . .
一个case语句处理完毕后,不能自由进入下一个case语句,但这条规则有一个例外。如果把多个case语
句放在一起(堆叠它们),其后加一个代码块,实际上是一次检查多个条件。如果满足这些条件中的任何一个, 就会执行代码,例如:
switch (<testVar>)
{
case <comparisonVall>: case <comparisonVal2>:
<code to execute if <testVar> == <comparisonVall> or <testVar> == <comparisonVal2> >
break;
注意,这些条件也适用于default语句0 default语句不一定要放在比较操作列表的最后,还可以把它和case 语句放在一起。用break或return添加一个断点,可确保在任何情况下,该结构都有一条有效的执行路径。 在下面的示例中,将使用switch语句,根据用户为测试字符串输入的值,将不同字符串写到控制台。
点击加载更多评论>>