位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 流程控制分支 switch 语句

提问人:刘团圆发布时间:2020-11-12

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语句,根据用户为测试字符串输入的值,将不同字符串写到控制台。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部