当前位置: 首页 > news >正文

c#中switch case语句的用法

在C#编程中,switch case语句是一种常用的多分支选择结构,提供了一种简洁而高效的方式来处理多个条件分支。本文将详细介绍 switch case语句的用法,包括基本语法、注意事项和高级用法。

一、基本语法

switch case语句根据一个表达式的值,从多个选项中选择一个分支执行。基本语法如下:

switch (expression)
{case constant1:// 代码块break;case constant2:// 代码块break;// 更多case语句default:// 默认代码块break;
}
​
  • expression:需要判断的表达式,其结果类型必须是整型、字符型、枚举型或字符串。
  • case constant:每个 case标签后跟一个常量值,表示一个待匹配的条件。
  • break:用于终止当前 case分支,跳出 switch语句。
  • default:可选的默认分支,当所有 case都不匹配时执行。

二、示例

1. 基本示例

以下是一个基本示例,根据输入的星期几输出对应的活动:

using System;class Program
{static void Main(){Console.WriteLine("请输入星期几(1-7):");int day = Convert.ToInt32(Console.ReadLine());switch (day){case 1:Console.WriteLine("星期一:去健身");break;case 2:Console.WriteLine("星期二:学习编程");break;case 3:Console.WriteLine("星期三:去游泳");break;case 4:Console.WriteLine("星期四:看电影");break;case 5:Console.WriteLine("星期五:打游戏");break;case 6:Console.WriteLine("星期六:去爬山");break;case 7:Console.WriteLine("星期天:休息");break;default:Console.WriteLine("输入错误!");break;}}
}
​
2. 字符串类型的switch case

C#支持在 switch case中使用字符串:

using System;class Program
{static void Main(){Console.WriteLine("请输入一个水果名:");string fruit = Console.ReadLine();switch (fruit){case "苹果":Console.WriteLine("你选择了苹果。");break;case "香蕉":Console.WriteLine("你选择了香蕉。");break;case "橙子":Console.WriteLine("你选择了橙子。");break;default:Console.WriteLine("未知的水果。");break;}}
}
​

三、注意事项

1. 必须有break或其他跳出语句

每个 case分支必须以 breakreturn或 goto case等语句结束,否则会发生“贯穿”(fall-through),即执行完当前 case的代码后继续执行下一个 case的代码,直到遇到 break或结束 switch语句。

2. 常量值唯一且类型匹配

每个 case标签后的常量值必须唯一且类型与 expression匹配。否则会导致编译错误。

四、高级用法

1. 多个case共享代码

多个 case可以共享同一段代码,只需列出所有 case标签,并在最后一个 case后编写代码块:

int number = 2;switch (number)
{case 1:case 2:case 3:Console.WriteLine("number 是 1、2 或 3");break;default:Console.WriteLine("number 不是 1、2 或 3");break;
}
​
2. 使用goto case跳转

在某些复杂场景下,可以使用 goto case从一个 case跳转到另一个 case

int number = 1;switch (number)
{case 1:Console.WriteLine("number 是 1");goto case 2;case 2:Console.WriteLine("跳转到 case 2");break;default:Console.WriteLine("number 不是 1 或 2");break;
}
​
http://www.dtcms.com/a/309314.html

相关文章:

  • Go语言的gRPC教程-拦截器
  • 向华为学习——IPD流程体系之IPD术语
  • 译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例
  • k8s云原生rook-ceph pvc快照与恢复(上)
  • JavaScriptAJAX异步请求:XHR、Fetch与Axios对比
  • 学习笔记:封装和单继承
  • ls hgfs提示ls: cannot access ‘hgfs‘: Permission denied
  • Spring Boot 2.1.18 集成 Elasticsearch 6.6.2 实战指南
  • OneCode3.0 DSM:领域驱动设计驱动下的自定义枚举领域划分实践
  • CMake Debug/Release配置生成器表达式解析
  • 加密与安全
  • ACM SIGCOMM 2024论文精选-01:5G【Prism5G】
  • 让 OAuth 授权码流程更安全的 PKCE 技术详解
  • Unity相机控制
  • C#线程同步(三)线程安全
  • LT3045EDD#TRPBF ADI亚德诺半导体 线性稳压器 电源管理应用设计
  • PCB 控深槽如何破解 5G 基站 120℃高热魔咒?
  • Webhook是什么
  • 【Nginx反向代理】通过Nginx反向代理将多个后端server统一到同一个端口上的方法
  • 开源爬虫管理工具
  • [ Leetcode ]---快乐数
  • 【Redis】key的设计格式
  • Django模型查询与性能调优:告别N+1问题
  • 第三篇:几何体入门:内置几何体全解析
  • 【LLM】讲清楚MLA原理
  • Linux(15)——进程间通信
  • EasyExcel 公式计算大全
  • Spring Boot Actuator 保姆级教程
  • 包裹移动识别误报率↓76%:陌讯时序建模算法实战解析
  • C#实现左侧折叠导航菜单