C#中使用 => 运算符的 switch 表达式

目录

一、关于switch 语句

1.switch 语句及语法结构

2.switch 语句的一些重要注意事项

3.通常情况下的示例

1.示例1

2.示例2 

二、使用 => 运算符的 switch 表达式

1.关于switch表达式

2.示例1

3.示例2


一、关于switch 语句

1.switch 语句及语法结构

        C# 中的 switch 语句是一种控制结构,允许您将一个表达式或值与多个值进行比较,并根据匹配的结果执行不同的代码部分。它的语法如下:

switch(expression) 
{case value1:// 如果 expression 等于 value1,则执行此代码部分break;case value2:// 如果 expression 等于 value2,则执行此代码部分break;// 更多的情况...default:// 如果 expression 不匹配任何一个情况,则执行此代码部分break;
}

2.switch 语句的一些重要注意事项

  • switch 语句中的每个 case 必须具有唯一的值。
  • case 值可以是常量表达式或枚举成员。
  • 可以在 switch 语句中使用 break、continue、return 或 throw 语句来退出当前的代码块。
  • 如果在 switch 语句中没有指定 default 情况,则最后一个 case 之后的代码将作为默认情况执行。
  • switch 语句可以用于任何标量类型,包括字符串。
  • 如果在先使用了return关键字,再后使用 break关键字,则会出现警告:

严重性

代码

说明

项目

文件

禁止显示状态

警告

CS0162

检测到无法访问的代码

CalcByClass

D:\MR\05\114\CalcByClass\CalcByClass\Form1.cs

148

活动

        无法访问到达break 语句,因为它出现在return 语句之后。return 语句结束封闭的 case 分支。

        解决办法:删除在后使用的关键字 break关键字。

3.通常情况下的示例

1.示例1

//  switch 语句
namespace _114_1
{internal class Program{private static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);int x = 5;switch (x){case 1:Console.WriteLine("x 等于 1");break;case 2:Console.WriteLine("x 等于 2");break;case 3:Console.WriteLine("x 等于 3");break;default:Console.WriteLine("x 不等于 1、2 或 3");break;}}}
}
//
/*
x 不等于 1、2 或 3*/

2.示例2 

// switch、case、return、break
namespace _114_2
{internal class Program{private static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);int i = 23;int j = 17;string type = "*";string temp;temp = CCount.Sum(i, j, type).ToString();Console.WriteLine("{0} {1} {2} = {3}",i, type, j, temp);}}public class CCount{public static int Sum(int a, int b, string type){switch (type) // .NET8.0以上会提示IDE0066,使用switch表达式警告{case "+":return a + b; /*break; */case "-":return a - b; /*break; */case "*":return a * b; /*break; */case "/":return a / b; /*break; */default:return 0; /*break; */}}}
}
//运行结果:
/*
23 * 17 = 391*/

二、使用 => 运算符的 switch 表达式

1.关于switch表达式

        在 C# 8.0 中引入的 switch 表达式,而不是 switch 语句,VS2019以上版本。

csharp_style_prefer_switch_expression 

属性

说明

选项名称

csharp_style_prefer_switch_expression

选项值

true

首选使用switch表达式

false

首选使用switch语句

默认选项值

true

       

2.示例1

        将上述示例2转换为使用=> 运算符的 switch表达式。 

        这是一个使用 => 运算符的 switch 语句的示例,它将根据提供的运算符执行不同的算术运算。
        这个 switch 语句接受两个参数 a 和 b,以及一个运算符,然后根据运算符执行相应的算术运算。每个 case 语句使用 => 运算符将运算符和要执行的算术运算关联起来。
        例如,如果运算符是 “+”,则执行 a + b 并返回结果。如果运算符是 “-”,则执行 a - b 并返回结果。同样,对于 “*” 和 “/”,将执行相应的乘法和除法运算。
        如果提供的运算符不是 switch 语句中定义的任何一个,则执行 default 代码部分,并返回 0。 

// 使用=> 运算符的 switch表达式
namespace _114_3
{internal class Program{private static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);int i = 23;int j = 17;string type = "*";string temp;temp = CCount.Sum(i, j, type).ToString();Console.WriteLine("{0} {1} {2} = {3}", i, type, j, temp);}}public class CCount{public static int Sum(int a, int b, string type){return type switch {"+" => a + b,"-" => a - b,"*" => a * b,"/" => a / b,_ => 0,};}}
}
//运行结果:
/*
23 * 17 = 391*/

3.示例2

        该方法使用CCount类的Result方法。Result方法使用=>运算符的switch表达式返回相应的结果字符串。

// 使用=> 运算符的return () switch的表达式
namespace _114_4
{internal class Program{private static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);int input = 4;Console.WriteLine(CCount.Result(input)); // 输出 "Four"}}public class CCount{internal static string Result(int value){return (value) switch {1 => "One",2 => "Two",3 => "Three",4 => "Four",_=> "Default",};}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有用的 Bash 别名和函数简介

简介 随着你在命令行上的操作越来越多,你会发现你使用的大部分命令只是可用命令的一个非常小的子集。大多数任务是习惯性的,你可能每天都以相同的方式运行这些任务。 虽然许多常见命令实用程序的制造者已经尝试通过使用缩短的名称(想想每天…

【Springboot】参数校验 spring-boot-starter-validation

# 第一步&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>xxx</version> </dependency> # 第二步&#xff1a;实体类添加…

Excel

1、Excel的学习路径 2、掌握excel的基础要求 01、保证新版本 02、培养好的数据表格习惯 03、主动性探索 04、多联系 一、函数 二、文本清洗函数 三、常见文本的清洗函数 获取k的位置 FIND("k",P2,1) 从第1个位置开始在位置P2&#xff0c;查询字段k&#x…

Java+SpringBoot+Vue:高校科研管理的技术革新

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

ChatGPT高效提问—prompt实践(智能开发)

ChatGPT高效提问—prompt实践&#xff08;智能开发&#xff09; ​ 如果你是一名程序员&#xff0c;一定有过这样的经历&#xff1a;排查某个bug话费好几个小时&#xff0c;在各个搜索引擎尝试搜索&#xff0c;浏览了几十甚至上百个网站&#xff0c;结果搜到的答案千篇一律&am…

websocket简易基操

一、概述 1.1 简介 WebSocket是HTML5下一种新的协议&#xff08;websocket协议本质上是一个基于tcp的协议&#xff09;&#xff0c;它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的&#xff0c;Websocket是一个持久化的协议。…

【STM32 CubeMX】GPIO的工作模式

文章目录 前言一、有哪些工作模式&#xff1f;1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 总结 前言 在嵌入式系统开发中&#xff0c;对于STM32微控制器的GPIO&#xff08;General Purpose Input/Output&#xff09;引脚的配置和使用是至关重要的。GPIO引脚可以通…

基本算法--贪心

1.简述 贪心法的效率非常高&#xff0c;复杂度常常为O&#xff08;1&#xff09;&#xff0c;是一种局部最优的解题方法&#xff0c;而很多问题都需要求全局最优&#xff0c;&#xff0c;所以在使用贪心法之前需要评估是否能从局部最优推广到全局最优。 2.思路 作为算法的贪…

【解决】配置文件YAML: application.yml Cannot resolve configuration property ‘xxxx‘

配置文件YAML: application.yml Cannot resolve configuration property xxxx 问题排查解决 问题 在application.yml文件里面配置Bean的初始值&#xff0c;但是报错如下&#xff1a; Cannot resolve configuration property person.lastName 排查 我们先去Bean检查是否拼写…

【国产MCU】-CH32V307-通用定时器(GPTM)-输入捕获模式测量脉冲

通用定时器(GPTM)-输入捕获模式测量脉冲 文章目录 通用定时器(GPTM)-输入捕获模式测量脉冲1、通用定时器(GPTM)介绍2、输入捕获模式3、驱动API介绍4、定时器输入捕获示例CH32V307的通用定时器模块包含一个16 位可自动重装的定时器(TIM2、TIM3、TIM4和TIM5),用于测量脉…

C语言函数的实参与形参

概念&#xff1a; 函数调用中的参数&#xff0c;被称为实参&#xff0c;即 arguments函数定义中的参数&#xff0c;被称为形参&#xff0c;即 parameters 实参与形参的关系&#xff1a; 实参于形参的类型和个数必须一一对应。形参的值由实参初始化。形参与实参位于不同的内存区…

基于函数计算AIGC图片识别

目录 在 OSS 中建立图片目录 在函数计算中基于模板创建ImageAI应用 体验ImageAI图像识别效果 我们不但可以基于函数计算创建AIGC应用&#xff0c;实现以文生图&#xff0c;同时我们也可以基于函数计算创建ImageAI应用&#xff0c;通过简单几步实现对图片中对象的识别。下面我…

【运维测试】测试理论+工具总结笔记第1篇:测试理论的主要内容(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论测试理论测试工具相关知识。Python测试理论的主要内容&#xff0c;掌握软件测试的基本流程&#xff0c;知道软件测试的V和W模型的优缺点&#xff0c;掌握测试用例设计的要素&#xff0c;掌握等价类划分法、边界值法、因…

12.12 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流裙 &#xff0c;内推/实习/校招汇总表格 1、实习 | 比亚迪2024年实习生招聘&#xff01; 实习 | 比亚迪2024年实习生招聘&#xff01; 2、校招 | 上海飒智智能科技有限公司2024校园招聘 校招 | 上海飒智智能科技有限公司2024校园…

qt“五彩斑斓“ opengl

本篇文章我们来描述一下opengl相关知识 我们先看一下opengl渲染的效果 很漂亮&#xff1f; 那下面就来介绍一下这么漂亮的opengl OpenGL&#xff08;Open Graphics Library&#xff09;是一个跨平台的图形编程接口&#xff0c;用于渲染2D和3D图形。它提供了一系列函数和数据结…

Zotero插件分享(第二弹)

今天紧接上一篇文章&#xff08;Zotero常用插件分享&#xff09;&#xff0c;继续分享关于Zotero常用插件的相关内容。&#xff08;排名不分先后&#xff09; 1.Translate for Zotero 英文文献阅读辅助工具&#xff0c;可以实现将pdf中选中的文字翻译为指定语言&#xff0c;并…

Git中Idea操作git及Git Flow

目录 一、Idea中使用Git 1.idea配置Git和Gitee 2.实践操作 1.将本地项目推送到远程 2.从远程库克隆项目到本地 二、Git Flow 1.什么是Git Flow 2.工作流程 3.实践操作 一、Idea中使用Git 1.idea配置Git和Gitee 第一步&#xff1a;设置git.exe的安装路径 在设置中的…

知识碎片-mvn install时不需要mybatis-generator重新生成代码

背景 每一次项目编译的时候&#xff0c;Mybatis-Plus会重新生成代码&#xff0c;导致手动添加的Mapper和Data等注解失效 解决 在phase标签修改为deploy阶段或选择不覆盖已经存在的文件。 <plugin><groupId>org.mybatis.generator</groupId><artifactI…

RMSNorm原理及代码

RMSNorm原理及代码 在大模型中使用层归一化有如下几个因素&#xff1a; 改善网络稳定性加速收敛速度提高模型的泛化能力 批量归一化是对一个批次内的数据进行归一化 层归一化是对一个样本中的不同特征进行归一化 如下是LayerNorm与RMSNorm的公式 在LLaMA中使用RMSNorm替代…

DolphinScheduler安装与配置

DolphinScheduler概述 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用。 DolphinScheduler的主要角色如下&#xff1a; MasterServer采用分布式无…