C#的Switch语句3(如何为一段代码应用多个case标签)

文章目录

  • 上一篇文章
  • 中断函数执行
  • 堆叠case
  • switch中实用的字符串函数
    • 将字符串转换为小写
  • switch例子

上一篇文章

C#的Switch语句2

中断函数执行

switch语句内部可以使用return语句,这为控制程序流程和函数返回值提供了一种直接的方式。

当在switch语句块中遇到return语句时,它不仅仅会终止当前switch块的执行,而且会直接结束包含该switch语句的整个函数的执行,并立即返回到调用该函数的地方。

也就是说return不仅可以用于传递一个值给调用者(如果函数有返回类型的话),还会立即跳出当前函数,不论switch结构后面是否还有其他代码。这与break语句只跳出switch块,而不结束函数执行形成了对比。

使用return可以在处理特定情况后立即结束函数,避免了不必要的代码执行,提高了代码的效率。这对于那些一旦满足某个条件就可以确定函数返回值的情况尤为有用。

public int GetDayOfWeekString(int day)
{
    switch (day)
    {
        case 1:
            return 1; // 星期一
        case 2:
            return 2; // 星期二
        // ... 其他case ...
        case 7:
            return 7; // 星期日
        default:
            return -1; // 无效的天数
    }
}

在这个例子里,一旦匹配到正确的case,函数立即返回对应的值并结束执行,无需额外的跳出语句或后续逻辑。

堆叠case

在C#,case语句支持一种称为“堆叠”的特性,允许你将多个case标签放在同一代码块前,使得这些不同的case值共享相同的执行逻辑。这对于需要相同处理结果的情况非常有用,可以减少代码重复,提高可读性和维护性。

假设我们有一个程序,需要根据分数等级输出不同的信息,但B+和A-实际上在处理上是一样的,我们可以这样写:

        string grade = "A-"; // 假设grade是我们要评估的分数等级
        switch (grade)
        {
            case "A":
                Console.WriteLine("优秀");
                break;
            case "A-": case "B+": //堆叠case
                Console.WriteLine("非常好");
                break;
            case "B":
            case "C+": 
                Console.WriteLine("良好");
                break;
            case "C":
            case "D+":
                Console.WriteLine("及格");
                break;
            default:
                Console.WriteLine("需要努力");
                break;
        }

在这里插入图片描述

switch中实用的字符串函数

将字符串转换为小写

进行字符串判断的时候,我们通常需要将其转换为小写或者大写,避免因为首字母大写或其他大小写问题,导致两个相同的字符串不匹配,在C#中,ToLower() 是 System.String 类的一个实例方法,用于将字符串中的所有字符转换为小写。

string text = "Hello, WORLD!";
string lowerText = text.ToLower();
Console.WriteLine(lowerText); // 输出: hello, world!

运行结果:
在这里插入图片描述
该函数不改变原始字符串,而是返回一个新的转换后的字符串。

switch例子

基础的switch已经学完了,接下来用一个简单的例子结束学习吧,下面是一个示例程序。这个程序会提示用户输入一个命令,然后根据输入(忽略大小写)执行相应的动作。

        while (true)
        {
            Console.WriteLine("请输入一个命令(help, info, exit): ");
            string input = Console.ReadLine();

            // 将输入转换为小写,以便进行不区分大小写的比较
            string command = input.ToLower();

            switch (command)
            {
                case "help":
                    Console.WriteLine("可用命令: help, info, exit");
                    break;
                case "info":
                    Console.WriteLine("这是一个简单的命令处理器示例");
                    break;
                case "exit":
                    Console.WriteLine("正在退出程序。再见!");
                    return; // 退出主函数,结束程序
                default:
                    Console.WriteLine("未知命令。请再次尝试。");
                    break;
            }
        }

在这个例子中:

程序启动后,会进入一个无限循环,等待用户输入。

用户输入的内容被读取后,立即通过ToLower()方法转换为小写形式,确保后续的switch语句可以不考虑输入的大小写。

switch语句根据转换后的命令执行不同的操作:

如果输入是"help",则显示可用的命令列表。

输入"info"时,输出一段描述程序的信息。

输入"exit"时,程序会打印一条消息并使用return语句退出Main方法,从而结束程序。

对于任何其他输入,程序会告知用户这是未知命令并要求重新输入。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/723223.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端高级架构师课程(总共111门课程,1150GB)

由阿里P8前端架构师亲自精心筛选整理的全网最新最具价值的前端进阶学习课程! 培训机构原版教程! 课程知识点和一线大厂完美匹配! 所有课程资源完整成套,不残缺,不拼凑,不拆开乱发! 这系列课程包…

【Linux】进程_9

文章目录 五、进程12. 自定义shell完整程序 未完待续 五、进程 12. 自定义shell 根据我们之前学的知识&#xff0c;这里来编写一个 shell 程序。 #include<stdio.h> #include<s…

【机器学习】 第1章 概述

一、概念 1.机器学习是一种通过先验信息来提升模型能力的方式。 即从数据中产生“模型”( model )的算法&#xff0c;然后对新的数据集进行预测。 2.数据集&#xff08;Dataset&#xff09;&#xff1a;所有数据的集合称为数据集。 训练集&#xff1a;用来训练出一个适合模…

深度判别特征学习在口音识别中的应用

论文&#xff1a;https://arxiv.org/pdf/2011.12461 代码&#xff1a;https://github.com/coolEphemeroptera/AESRC2020 摘要 使用深度学习框架进行口音识别是一项与深度说话人识别相似的工作&#xff0c;它们都期望为输入语音提供可识别的表示。相比于说话人识别网络学习的个…

【数据结构】线性表之《无头单链表》超详细实现

单链表 一.链表的概念及结构二.顺序表与链表的区别与联系三.单链表的实现1.创建单链表2.初始化单链表3.购买节点4.打印单链表5.插入操作1.头插2.尾插3.给定位置之前插入 6.删除操作1.头删2.尾删3.删除给定位置的结点 7.查找数据8.修改数据9.求单链表长度10.清空单链表11.销毁单…

机器学习课程复习——聚类算法

Q:什么是硬聚类,什么是软聚类? 如果一个样本只能属于一个类,则称为硬聚类(hard clustering); 如果一个样本可以属于多个类,则称为软聚类(soft clustering)。 Q:聚类和分类的区别? 聚类分类学习类型无监督学习方法 不需要事先标记的数据 通过发现数据中的模式或结构来组…

【毕业设计】Django 校园二手交易平台(有源码+mysql数据)

此项目有完整实现源码&#xff0c;有需要请联系博主 Django 校园二手交易平台开发项目 项目选择动机 本项目旨在开发一个基于Django的校园二手交易平台&#xff0c;为大学生提供一个安全便捷的二手物品买卖平台。该平台将提供用户注册和认证、物品发布和搜索、交易信息管理等…

Linux-Https协议

文章目录 前言一、Https协议二、常见的加密方式对称加密非对称加密数据摘要&&数据指纹中间人攻击 三、Https的加密历程方案1-只使用对称加密方案2-只使用非对称加密方案3-双方都使用非对称加密方案4-非对称加密对称加密 四、CA证书什么是CA证书CA证书的合法性如何生成.…

Python9 Tkinter创建GUI

1.Tkinter简单介绍 Tkinter是Python的标准GUI&#xff08;图形用户界面&#xff09;库&#xff0c;提供一种简单的方式来创建窗口程序。Tkinter封装了访问Tk GUI工具包的接口&#xff0c;Tk是一个跨平台的GUI开发库&#xff0c;广泛用于创建图形界面。 使用Tkinter&#xff0…

++++++局部变量、全局变量及变量的存储类别++++====+++指针+++

局部变量、全局变量及变量的存储类别 局部变量与全局变量的基本概念 局部变量&#xff1a;在函数内部定义的变量称为局部变量&#xff0c;也称为内部变量。它们只在定义它们的函数内部有效&#xff0c;即只有在这个函数被调用时&#xff0c;局部变量才会被分配内存空间&#x…

Java学习【深入解读File类:从基础到高级的完整指南】

Java学习【深入解读File类&#xff1a;从基础到高级的完整指南】 ⭐File的概述和构造方法⭐File常见的成员方法&#x1f319;构造方法&#x1f319;length()&#x1f319;getAbsoluteFile()和getPath()&#x1f319;getName()和lastModified() ⭐文件的创建和删除⭐获取并遍历 …

从 0 打造私有知识库 RAG Benchmark 完整实践

背景介绍 最近从 0 构建了一个大模型知识库 RAG 服务的自动化 Benchmark 评估服务&#xff0c;可以基于私有知识库对 RAG 服务进行批量自动化测试与评估。本文是对这个过程的详细记录。 本文实际构建的是医疗行业知识库&#xff0c;基于高质量的医学指南和专家共识进行构建。…

8K Stars!Text2SQL还不够?试试更精准的RAG2SQL开源工具

▼618钜惠专场直播&#xff0c;点击预约按钮免费预约。 SQL 是查询数据库的关键&#xff0c;但如何高效地构建满足个人需求的 SQL 语句呢&#xff1f;随着 AI 大模型的进步&#xff0c;我们现在已经拥有了 Text2SQL 的技术&#xff0c;这一技术已被多款产品广泛应用。 今天&…

考研数学|做完《660》,做《880》还是吃力,怎么办?

880吃力说明基础还是不太扎实&#xff0c;建议配合知能行再刷880。 强化之前做660&#xff0c;然后在强化的时候再做880。 660整体难度属于基础阶段到强化阶段。而且是选填部分的题目&#xff0c;所以还是要做一些其他题 然后说一下推荐的习题册&#xff1a;基础不好先做1800、…

如何学习 Java 中的 Socket 编程,进行网络通信

Socket编程是网络编程的核心技术之一&#xff0c;它使得不同主机之间可以进行数据通信。Java提供了丰富的网络编程API&#xff0c;使得编写网络应用程序变得相对简单和直观。本文将详细讲解如何学习Java中的Socket编程&#xff0c;并通过示例代码展示如何实现网络通信。 一、S…

船舶能源新纪元:智能管理引领绿色航运潮流

在蓝色的大海上&#xff0c;无数船只乘风破浪&#xff0c;为全球的贸易和文化交流贡献着力量。然而&#xff0c;随着环保意识的提升和可持续发展的要求&#xff0c;船舶的能源消耗和排放问题逐渐成为了人们关注的焦点。在这个关键时刻&#xff0c;船舶能源管理系统应运而生&…

智能合约开发的过程

智能合约是一种运行在区块链上的程序&#xff0c;可以自动执行预先设定的条款和条件。智能合约具有去中心化、透明、不可篡改等特点&#xff0c;因此被广泛应用于金融、供应链、物联网等领域。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流…

西门子学习笔记12 - BYTE-REAL互相转化

这是针对于前面MQTT协议的接收和发送数组只能是BYTE数组做出的对应的功能块封装。 1、BYTE-REAL转化 1、把byte数组转成字符串形式 2、把字符串转成浮点数 2、REAL-BYTE转化 1、把浮点数转成字符串 2、把字符串转成Byte数组

通过编辑器工具改变Inspector锁定状态

是在看一系列视频的时候&#xff0c;看到的&#xff0c;感觉挺有用&#xff0c;就记录下来。 就是这个小锁的按钮&#xff0c;后续可以通过快捷键&#xff0c;快速锁定和解锁。代码里没有加入快捷键控制&#xff0c;有需要用到的可以自己加一下&#xff0c;比较简单 using Uni…

前端上传minio

参考【GitCode - 全球开发者的开源社区,开源代码托管平台】 注意事项&#xff1a;nodejs服务&#xff0c;文件扩展名为mjs&#xff0c;版本号8.0&#xff0c;引入的时候 import * as Minio from minio import Minio as * from minio// 实例化对象存储服务的MinIO客户端 // p…