C# switch语句的用法详解

简介: C#中switch语句用于多分支选择,根据表达式值匹配case执行对应代码块。支持整型、枚举类型,需遵守case值为常量、break防穿透等规则,default为可选默认分支。

C# 中的 switch 语句有些类似于《if else if 语句》,都可以根据表达式执行某个的语句块,其语法格式如下:

switch(表达式){

   case value1:

   //表达式的值为 value1 时,要执行的代码

       break;

   case value2:

   //表达式的值为 value2 时,要执行的代码

       break;

   case value3:

   //表达式的值为 value3 时,要执行的代码

       break;

   ... ...

   default:

   //没有与表达式相匹配的值时,要执行的代码

       break;

}

使用 switch 语句时必须遵守以下规则:

  • switch 语句中表达式的值必须是一个整型或者枚举类型;
  • 在一个 switch 语句中可以有任意数量的 case 语句,每个 case 关键字后面要跟一个与表达式比较的值和一个冒号;
  • case 关键字后面的值必须与 switch 中表达式的值具有相同的数据类型,并且必须是一个常量(也可以理解为是一个固定的值,不会随程序的运行发生改变);
  • 当表达式的值等于 case 中的值时,就会执行 case 后面的语句,在遇到 break 关键字时停止;
  • 当遇到 break 关键字时,switch 语句会停止运行,并跳转到 switch 语句以外的下一行代码继续运行;
  • 并不是每一个 case 语句后面都需要包含 break 关键字,如果 case 语句为空(case 语句后面没有要执行的代码),则可以不包含 break 关键字,这时程序会继续执行后续的 case 语句,直至遇到 break 关键字为止;
  • C# 不允许从一个 case 语句连续执行到下一个 case 语句,因此如果 case 语句中包含要执行的语句,就必须包含 break 关键字或其他跳转语句;
  • 一个 switch 语句的末尾可以有一个可选的 default(默认选项),当所有 case 语句都不能与表达式相匹配时则会执行 default 部分中的代码,而且 default 中的 break 语句可以省略;
  • C# 不支持从一个 case 语句跳转到另一个 case 语句,如果要从一个 case 语句跳转到另一个 case 语句的话,可以使用 goto 语句,例如goto default


switch 语句的执行流程如下图所示:


图:switch 语句执行流程


【示例】根据输入的成绩来评定成绩的等级。

using System;


namespace c.biancheng.net

{

   class Demo

   {

       static void Main(string[] args){

           Console.WriteLine("请输入学生考试的成绩(0~100的整数)");

           int points = Convert.ToInt32(Console.ReadLine());

           switch (points / 10)

           {

               case 10:

                   Console.WriteLine("优秀");

                   break;

               case 9:

                   Console.WriteLine("优秀");

                   break;

               case 8:

                   Console.WriteLine("良好");

                   break;

               case 7:

                   Console.WriteLine("及格");

                   break;

               case 6:

                   Console.WriteLine("及格");

                   break;

               default:

                   Console.WriteLine("不及格");

                   break;

           }

       }

   }

}

运行结果如下:

请输入学生考试的成绩(0~100的整数)

88

良好

相关文章
|
2月前
|
编译器 C#
C#关键字一览表
C#关键字分保留字与上下文关键字两类:保留字(如if、class)具特殊语法意义,不可作标识符,但可用@前缀强制使用;上下文关键字(如get、set)仅在特定语境中生效,新增时避免破坏旧代码兼容性。
|
Windows
Winform控件优化之背景透明那些事1:Button控件等背景透明
WinForm不支持真正的透明,其控件透明的实现都是背景颜色设置和对应位置的父控件背景相同。 Winform中控件的背景透明只有三种:Button控件的透明、其他控件的透明...
4024 0
Winform控件优化之背景透明那些事1:Button控件等背景透明
|
1月前
|
前端开发 JavaScript 容器
前端组件库 ——LayUI 知识点大全(三)
教程来源 https://bncne.cn LayUI基础元素丰富实用:按钮支持多色、多尺寸及图标组合;图标为矢量字体,可自由缩放变色;表单模块集成验证与交互;layer弹层、table表格、laydate日期、upload上传等核心模块,让后台开发简洁高效。
|
2月前
|
人工智能 程序员 C语言
Python 与 C++、C 语言的区别及选择指南
C 语言:语法相对复杂,变量需要显式声明数据类型,代码块用大括号表示。例如:
313 3
|
2月前
|
监控 安全 大数据
信息系统规划
本文系统梳理信息系统规划全体系:涵盖规划价值、组织方法、核心原则、发展阶段、总体框架、分系统划分、组织与技术体系、任务及保障部署,并详解需求挖掘、场景建模、一致性检查与持续改进等11项工作要点,集成SST、BSP、CSF等五大经典战略方法。
174 0
|
8月前
|
数据采集 JSON 搜索推荐
淘宝商品评论的情感分析实战:API数据驱动用户洞察
淘宝商品评论API是淘宝开放平台提供的数据接口,支持通过Python高效获取商品的用户评价信息。可返回结构化数据,包含评论内容、评分、时间、图片及商家回复等,支持多维度筛选与分页,适用于竞品分析、用户画像与市场研究。
|
5月前
|
C#
C# 实现简单的定时任务工具
基于 `System.Timers.Timer` 实现定时任务,支持周期性与单次执行。通过封装 Timer 类,提供启动、停止功能,并包含异常处理,确保任务稳定运行,适用于后台定时操作场景。
|
Python
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
890 161
|
SQL 数据可视化 关系型数据库
【数据库工具】DBeaver:一款免费的通用数据库工具和 SQL 客户端
【数据库工具】DBeaver:一款免费的通用数据库工具和 SQL 客户端
2155 1
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?