当前位置: 首页 > 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.lryc.cn/news/607304.html

相关文章:

  • Spring Cloud 和服务拆分:微服务落地的第一步
  • TwinCAT3示例项目1
  • 日志管理进入「对话式」时代:日志易MCP Server落地实录
  • C# _Json数据
  • 仿艾莫迅MODBUS调试工具写一个上位机
  • 基于springboot的快递分拣管理系统
  • 【智能协同云图库】第七期:基于AI调用阿里云百炼大模型,实现AI图片编辑功能
  • 【AI 加持下的 Python 编程实战 2_12】第九章:繁琐任务的自动化(上)——自动清理电子邮件文本
  • 【Linux学习|黑马笔记|Day1】Linux初识、安装VMware Workstation、安装CentOS7、远程连接、虚拟机快照
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现围栏羊驼的检测识别(C#代码,UI界面版)
  • 标准项目-----网页五子棋(4)-----游戏大厅+匹配+房间代码
  • AJAX快速入门 - 四个核心步骤
  • HTML无尽射击小游戏包含源码,纯HTML+CSS+JS
  • 【Flutter】内存泄漏总结
  • 【数据可视化-78】2025年上半年广东省各市GDP排名深度解析与可视化:Python + Pyecharts 深度洞察(含完整数据、代码)
  • OpenVLA: 论文阅读 -- 开源视觉-语言-行动模型
  • ZKmall开源商城微服务架构电商平台:服务注册与配置中心设计
  • Spring Boot 整合量子密钥分发(QKD)实验方案
  • Linux---make和makefile
  • 分布在背侧海马体CA1区域的位置细胞(place cells)对NLP中的深层语义分析的积极影响和启示
  • 面试题:怎么理解 OSI 参考模型(开放式系统互联参考模型) 和 TCP/IP 模型(传输控制协议 / 网际协议模型 )
  • 【vue】Vue 项目创建工具对比:vue create 与 create-vue 的核心区别
  • RAGFLOW~knowledge graph
  • k8s部署mysql
  • 【数论】P8954 「VUSC」Math Game|普及+
  • SpringBoot3.x入门到精通系列:1.5 配置文件详解
  • QT6 源,十章绘图(2)画刷 QBrush:刷子只涉及填充颜色,线型,填充图片,以及变换矩阵这几个属性,附源代码带注释。
  • 京东零售在智能供应链领域的前沿探索与技术实践
  • 【Kubernetes 指南】基础入门——Kubernetes 集群(二)
  • Java抽象类与接口深度解析:核心区别与应用场景全指南