编程语言switchstatement是什么意思

发布时间:2019-08-15 14:24:15

编程语言switch statement是什么意思

推荐回答

语法:这个是开关分支结构。基本用法如下switch(option){ case option1:语句;break; case option2:语句;break; case option3:语句;break; defult:语句;````````````````}应用场景:某些时候,在嵌套使用if语句时,所有if语句看起来都非常相似,因为它们都在对一个完全相同的表达式进行求值,唯一的区别是每个if语句都将表达式的结果与一个不同的值进行比较。例如,考虑以下代码块,它用一个if语句来检查day变量中的值,并判断它对应的是星期几:if (day == 0)dayName = "Sunday";else if (day == 1)dayName = "Monday";else if (day == 2)dayName = "Tuesday";else if (day == 3)...elsedayName = "Unknown";在这些情况下,通常可以将嵌套if语句改写成一个switch语句,提高程序的运行效率,并增强可读性。switch语句的语法如下(switch,case和default是C#关键字):switch ( controllingExpression ){case constantExpression : statementsbreak;case constantExpression : statementsbreak;...default : statementsbreak;}controllingExpression(控制表达式)只求值一次。然后,程序逐个检查constantExpression(常量表达式),如果找到和controllingExpression的值相等的一个constantExpression,就执行由它标识的那个代码块。我们将constantExpression称为case标签,一个case标签所标识的代码块则称为case块。进入case块之后,程序将一直执行,直到遇到一个break语句为止。遇到break之后,switch语句就会结束,程序将从switch语句结束大括号之后的第一个语句继续执行。如果没有任何一个constantExpression的值等于controllingExpression的值,就运行由可选的default标签所标识的代码块。注意:每个constantExpression的值都必须是唯一的,使controllingExpression只能与它们当中的一个值匹配。如果controllingExpression的值和任何一个constantExpression的值都不匹配,也没有default标签,程序就从switch的结束大括号之后的第一个语句继续执行。例如,前面的嵌套if语句可以改写成以下switch语句:switch (day){case 0 :dayName = "Sunday";break;case 1 :dayName = "Monday";break;case 2 :dayName = "Tuesday";break;...default :dayName = "Unknown";break;}switch语句非常有用。但遗憾的是,你不能想用就用。使用时必须谨慎。任何switch语句都必须严格遵循以下规则。● 只能将switch语句用于基本数据类型,例如int或string。对于其他任何类型(包括float和double类型),只能用if语句。● case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,则必须使用if语句。● case标签必须具有唯一性;也就是说,不允许两个case标签具有相同的值。● 可以连续写一系列case标签(中间不间插额外的语句),指定在多种情况下都运行相同的语句。如果像这样写,最后一个case标签之后的代码将适用于所有case。然而,假如两个标签之间有额外的代码,同时没有使用break跳出,就不能从第一个标签贯穿(也称直通)到第二个标签,编译器会报错。例如:switch (trumps){case Hearts :case Diamonds : // 允许贯穿—标签之间无额外代码color = "Red"; // 针对Hearts和Diamonds这两种情况都会执行的代码break;case Clubs :color = "Black";case Spades : // 出错—标签之间有额外代码,而且没有使用break来跳出color = "Black";break;}注意:break语句是用来阻止直通的最常见的方式,但也可以用一个return语句或者一个throw语句来替代它。
以上问题属网友观点,不代表本站立场,仅供参考!