C#中switch语句用法
- 1 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会继续后续的 case,直到遇到break为止。
- 2 如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。
- 3 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
- 4 switch嵌套
- 5 switch与for循环
1 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会继续后续的 case,直到遇到break为止。
char grade = 'C'; switch (grade) { case 'A': case 'B': case 'C': Console.WriteLine("CCC"); break; case 'D': Console.WriteLine("DDD"); break; default: Console.WriteLine("无效的成绩"); break; }
无论grad = A
或B
或C
都输出CCC
2 如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。
char grade = 'A'; switch (grade) { case 'A': Console.WriteLine("AAA"); case 'B': case 'C': Console.WriteLine("CCC"); break; case 'D': Console.WriteLine("DDD"); break; default: Console.WriteLine("无效的成绩"); break; }
提示错误:控制不能从一个case标签("case 'A':"
)贯穿到另一个case标签
3 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
char grade = 'D'; switch (grade) { case 'A': Console.WriteLine("AAA"); break; case 'B': case 'C': Console.WriteLine("CCC"); break; case 'D': default: Console.WriteLine("其他成绩"); break; }
当grade=D
或其他值(不是ABC)
时输出其他成绩
default
语句块中也必须添加break
4 switch嵌套
int a = 100; int b = 201; switch (a) { case 100: Console.WriteLine("100"); switch (b) { case 200: Console.WriteLine("200"); break; case 201: Console.WriteLine("201"); break; } break; case 101: Console.WriteLine("101"); break; default: Console.WriteLine("其他值"); break; }
输出100
、101
5 switch与for循环
5.1 break语句用于终止最近的封闭代码块,switch中的break不会终止for循环
for(int i = 0; i < 5; i++) { switch (i) { case 1: Console.Write("111"); break; case 2: Console.Write("222"); break; case 3: Console.Write("333"); break; case 4: Console.Write("444"); break; default: Console.Write("其他"); break; } Console.WriteLine("\t第" + i.ToString() + "次循环"); }
111.png
5.2 continue语句不能单独在switch中使用,可以在循环内的switch中使用,用于跳过当次循环,直接进入下一次循环。
for(int i = 0; i < 5; i++) { switch (i) { case 1: Console.Write("111"); break; case 2: Console.Write("222"); continue; break; case 3: Console.Write("333"); break; case 4: Console.Write("444"); break; default: Console.Write("其他"); break; } Console.WriteLine("\t第" + i.ToString() + "次循环"); }
222.png
注意第2次循环
没有输出
不建议在switch中使用continue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决