C#:选择语句
选择语句:根据表达式的值,从若干语句中选择一个来执行。
选择语句包含:if语句和switch语句。
if语句:根据布尔表达式的值,选择要执行的语句。
语法:
第一种:if (布尔表达式) 一条嵌入式语句
示例:
static int MaxValue(int valuea, int valueb) { if (valuea > valueb) return valuea; return valueb; }
上面的方法,想要表达的意图是,返回两个数中较大的一个。return和valuea组合形成了表达式语句--表达式语句可以作为嵌入式语句,从语法上来看复合if语句的语法。
第二种:if (布尔表达式) 一条嵌入式语句 else 一条嵌入式语句
示例:
static int MaxValue(int valuea, int valueb) { if (valuea > valueb) return valuea; else return valueb; }
这是一个if语句的第二种形式的运用,因为第一种单使用if的代码阅读起来效果并不好。当不满足条件时,使用else分支能让别人阅读起代码来清晰明了。
示例:输入学生成绩,使用if...else语句,达到下面目的:0~59 不及格、60~79 良好、80~100优秀。
private static string PrintScore(int score) { if (score>=80&&score<=100) { return "优秀"; } else { if (score>=60&&score<80) { return "良好"; } else { if (score>=0&&score<60) { return "不及格"; } else { return "异常数据"; } } } }
调用这个方法,传入成绩为:40分、60分、80分、101分进行测试:
var res= PrintScore(80); Console.WriteLine(res);
输出结果:不及格、良好、优秀、异常数据。
虽然上面的代码完成了题目要求,但是代码却有要优化的地方:第一个else分支后面跟着的其实是一个块语句,而块语句中的大段代码其实只是一个if语句。所以我们可以把{}去掉,将if语句直接写在else后面。这在语法上是没有问题的,所以我们可以把代码简化成:
private static string PrintScore(int score) { if (score>=80&&score<=100) { return "优秀"; } else if (score >= 60 && score < 80) { return "良好"; } else if (score >= 0 && score < 60) { return "不及格"; } else { return "异常数据"; } }
上面的形式,其实是if..else if形式。我们只不过推演了一下它是怎么来的。
switch语句:选择一个要执行的语句列表,这个列表具有一个相关的switch标签,这个标签对应switch表达式的值。
语法:switch (表达式) switch块。
使用switch来完成,上面if语句完成的输出成绩等级的功能。
示例:
static string PrintScoreWithSwitch(int score) { switch (score/10) { case 8: case 9: case 10: return "优秀"; case 7: case 6: return "良好"; case 5: case 4: case 3: case 2: case 1: case 0: return "不及格"; default: return "输入有误"; } }
以上代码,也能实现根据成绩输出等级的功能。当然为了让代码能够更加完善,我们还需要加上一个数值范围的判断。
static string PrintScoreWithSwitch(int score) { if (score >= 0 && score <= 100) { switch (score / 10) { case 8: case 9: case 10: return "优秀"; case 7: case 6: return "良好"; default: return "不及格"; } } else { return "异常数据"; } }
关于switch语句,我们可以发现某些情况下,他完全能够替代if语句。
使用switch语句时要注意在每一个case 标签后都要设置一个break等关键字,来防止贯穿。如果不进行这样的操作,C#是不允许我们的代码编译通过的:
switch语句匹配的表达式的值如果是枚举类型的时候,通过VS的智能填充我们可以快速实现switch骨架的编写:
上面的操作步骤是,先键入 switch 然后按两下TAB键;接下来输入 待匹配的值 case_value;最后按下回车键就可以了。
以上便是对选择语句的回顾总结,记录下来以便以后查阅。