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

良好

相关文章
|
20天前
|
监控 安全 大数据
信息系统规划
本文系统梳理信息系统规划全体系:涵盖规划价值、组织方法、核心原则、发展阶段、总体框架、分系统划分、组织与技术体系、任务及保障部署,并详解需求挖掘、场景建模、一致性检查与持续改进等11项工作要点,集成SST、BSP、CSF等五大经典战略方法。
129 0
|
20天前
|
编译器 C#
C#关键字一览表
C#关键字分保留字与上下文关键字两类:保留字(如if、class)具特殊语法意义,不可作标识符,但可用@前缀强制使用;上下文关键字(如get、set)仅在特定语境中生效,新增时避免破坏旧代码兼容性。
|
20天前
|
存储 C# Windows
C#数据类型(值类型+引用类型+指针类型)
C#数据类型分三类:值类型(如int、bool,直接存值)、引用类型(如string、object,存内存地址)和指针类型(用于直接内存操作)。值类型继承自System.ValueType,占用栈内存;引用类型在堆中分配,支持装箱/拆箱;指针需在unsafe上下文中使用。
|
Windows
Winform控件优化之背景透明那些事1:Button控件等背景透明
WinForm不支持真正的透明,其控件透明的实现都是背景颜色设置和对应位置的父控件背景相同。 Winform中控件的背景透明只有三种:Button控件的透明、其他控件的透明...
3998 0
Winform控件优化之背景透明那些事1:Button控件等背景透明
|
7月前
|
数据采集 JSON 搜索推荐
淘宝商品评论的情感分析实战:API数据驱动用户洞察
淘宝商品评论API是淘宝开放平台提供的数据接口,支持通过Python高效获取商品的用户评价信息。可返回结构化数据,包含评论内容、评分、时间、图片及商家回复等,支持多维度筛选与分页,适用于竞品分析、用户画像与市场研究。
|
5月前
|
缓存 前端开发 JavaScript
Nginx性能优化
本课程深入讲解Nginx性能优化三大核心:动静分离、客户端缓存与Gzip压缩,涵盖反向代理配置、负载均衡实现及日志分析技巧,结合Shell命令与GoAccess工具进行实战统计,助力掌握企业级Web服务优化方案。
393 75
Nginx性能优化
|
4月前
|
C#
C# 实现简单的定时任务工具
基于 `System.Timers.Timer` 实现定时任务,支持周期性与单次执行。通过封装 Timer 类,提供启动、停止功能,并包含异常处理,确保任务稳定运行,适用于后台定时操作场景。
|
运维 监控 网络协议
IPv6地址之间的转换技术:NAT66
【4月更文挑战第25天】
2845 0
IPv6地址之间的转换技术:NAT66
|
人工智能 分布式计算 DataWorks
连续四年!阿里云领跑中国公有云大数据平台
近日,国际数据公司(IDC)发布《中国大数据平台市场份额,2023:数智融合时代的真正到来》报告——2023年中国大数据平台公有云服务市场规模达72.2亿元人民币,其中阿里巴巴市场份额保持领先,占比达40.2%,连续四年排名第一。
798 12
|
前端开发 Unix Linux
KVM 架构概述
【10月更文挑战第12天】KVM是基于硬件辅助虚拟化技术的虚拟机监控器,核心依赖于CPU的虚拟化支持如Intel VT和AMD-V。

热门文章

最新文章