首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将旧的Switch()语法转换为新的c# 8

旧的Switch()语法是指在C# 7及以下版本中使用的Switch语句。C# 8引入了新的Switch()语法,它提供了更简洁和灵活的方式来编写条件分支逻辑。

新的Switch()语法使用关键字"switch"和"case"来定义条件分支。相较于旧的Switch语句,新的语法具有以下特点:

  1. 模式匹配:新的Switch()语法支持模式匹配,允许在case语句中使用更复杂的模式进行匹配。这包括类型模式、常量模式、变量模式、位置模式等。通过模式匹配,我们可以更精确地匹配特定的条件,并执行相应的代码块。
  2. 表达式主体:新的Switch()语法支持使用表达式作为每个case语句的返回值,而不仅仅是语句块。这使得代码更加简洁和易读。

下面是一个示例,展示如何将旧的Switch()语法转换为新的C# 8语法:

旧的Switch()语法:

代码语言:txt
复制
switch (variable)
{
    case value1:
        // 执行语句块1
        break;
    case value2:
        // 执行语句块2
        break;
    default:
        // 执行默认语句块
        break;
}

新的Switch()语法:

代码语言:txt
复制
variable switch
{
    value1 => expression1,
    value2 => expression2,
    _ => defaultExpression
};

在新的语法中,每个case语句都由值和箭头(=>)连接的表达式组成。如果没有匹配的值,则可以使用下划线(_)作为通配符来指示默认情况。

以下是对新的Switch()语法的一些说明:

  • "value1"和"value2"是要匹配的值。
  • "expression1"和"expression2"是与相应的case语句相关联的表达式。
  • "_ => defaultExpression"是默认情况下的表达式,如果没有任何case匹配。

总结一下,新的Switch()语法提供了更强大和灵活的条件分支逻辑编写方式,支持模式匹配和表达式主体。它可以帮助开发人员编写更简洁、可读性更高的代码。

(注:此答案中没有提及云计算相关内容,因为问题与云计算无关。如果需要关于云计算的帮助,请提供相关问题,我将很乐意为您解答。)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 8之后那些特性(七): switch表达式 Switch Expressions

但其实在Java 12,13以及最终17中,Java都引进与优化了与switch语句有关联一个特性,那就是switch表达式 这篇文章是Java 8之后那些特性系列第七篇。...本系列其它文章为: 1. Java 8之后那些特性(一):局部变量var 2. Java 8之后那些特性(二):文本块 Text Blocks 3....Java 8之后那些特性(三):Java System Logger 4. Java 8之后那些特性(四):网络请求 Java Http Client 5....Java 8之后那些特性(五):Helpful NullPointerExceptions 6....switch语句是大家熟悉switch用法,而 switch表达式则是我们今天要说。 其实,从这两者之间名字来看,就能猜到两者肯定有很大相似性,也一定会有不同。

5.1K21
  • 使用 Microsoft.Net.Compilers 在旧版本 Visual Studio 201320152017 中开启 C# 7.x 和 C# 8 语法

    新版本 C# 特性需要新版本 Visual Studio 支持。不过,如果你不介意修改项目的话,你也能在低版本 Visual Studio 中获得高版本 C# 语言支持了。...不同 Visual Studio 原生支持 C# 版本 Visual Studio 每一次重大发布都带来 C# 版本(至少在 Visual Studio 2017 之前是这样),于是通常情况下如果你使用了旧版本...Visual Studio,还打不开编写了 C# 语法项目呢!...这是开发者计算机上事情,不影响产品 .NET Framework 版本需求。如果你连系统也比较,那么安装下最新版本 .NET Framework 即可。...1 2 3 4 5 6 7 8 9 class Program { static async Task Main(string[] args) { Console.WriteLine

    38920

    C#警告波预示未来增加关键字

    作者 | Jonathan Allen 译者 | 平川 策划 | 丁晓昀 与 C# 9 和 10 一样,C# 11 也悄悄地增加了一个编译器警告。...该警告可以防止使用全部小写类型名称(如类、结构和接口)。 创建这个警告是为了方便微软在未来添加关键字。...C# 关键只包含小写 ASCII 字母,因此,加入其他任何字母都可以防止类型名称与未来关键字发生冲突。 背    景 C# 工具链一直将其信息分为三大类:编译器错误、编译器警告和静态分析警告。...因为它们是默认启用,添加警告被认为是一种破坏性变化。如果添加了警告并启用了 TreatWarningsAsErrors,那么在 C#7 中可以编译代码在 C#8 中可能会无法编译。...从 C# 9 开始,微软增加了 C# 警告波(Warning Waves)概念。这是些附加编译器警告,也就是说,不需要额外安装一个工具或包,它们默认是不启用

    31220

    域名更换后如何网站权重转移到网站(301重定向)

    我们可能会因为各种原因,不得不更换我们域名,但域名在搜索引擎上已经被收录过,具有一定权重,如果我们贸然更换域名而不进行管理的话,那么以前网站所拥有的权重将不复存在,如果域名权重能转移到域名那岂不美滋滋...注意:我们需要做是全站301重定向,所以在我们更换域名后,一定要确保站点是可以访问,并且网站目录结构和链接要与网站完全一致。...apache 使用 .htaccess 域名 301 重定向到域名 Options +FollowSymLinks RewriteEngine on RewriteRule (.*) https:...//www.newdomain.com/$1 [R=301,L] .htaccess一定是放在网站根目录中,如果您网站已经有该文件,直接修改即可 ngnix 推荐使用return指令,因为rewrite...使用rewrite,通过正则匹配所有的URI后再去掉开头第一个/(反斜线) rewrite ^/(.*)$ https://www.newdomain.com/$1; # 使用rewrite指令,不同是通过

    3.2K20

    java jsonobjectList_java – JSONObject转换为List或JSONArray简单代码?「建议收藏」

    大家好,又见面了,我是你们朋友全栈君。 我已经通过各种线程阅读并发现了类似的问题,但在找到解决我特定问题方法方面却相当不成功....[{“locationId”:2,”quantity”:1,”productId”:1008}]}orr’s type = class org.json.simple.JSONObject 我正在尝试这些数据放入数组.../列表/任何可以使用密钥地方,470,471来检索数据....orderOneKey = (JSONObject)orderOne.get(0); System.out.println(orderOneKey.get(“productId”)); 这就是我所追求,...编辑: 显然我无法回答8个小时问题: 感谢朋友帮助和一些摆弄,我发现了一个解决方案,我确信它不是最有说服力,但它正是我所追求: for(Object key: orr.keySet()) { JSONArray

    8.9K20

    】如何MySQL数据目录更改为CentOS 7上位置

    无论您是增加更多空间,评估优化性能方法,还是希望利用其他存储功能,本教程指导您重新定位MySQL数据目录。...无论您使用何种底层存储,本指南都可以帮助您将数据目录移到位置。...当有斜线时,rsync会将目录内容储到挂载点,而不是将其转移到包含mysql目录中: sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01 一旦...改变后面的路径来反映位置。...总结 在本教程中,我们已经MySQL数据目录移到位置,并更新了SELinux以适应调整。尽管我们使用是块存储设备,但是这里说明应该适用于重新定义数据目录位置,而不考虑底层技术。

    3K30

    引入“ Chitrakar”一个AI系统,该系统人脸图像转换为Jordan曲线

    印度TCS机器人研究实验室研究人员推出了一种名为“ Chitrakar”的人工智能(AI)系统,该系统人脸图像转换为可识别的非自相交环,称为Jordan曲线。...在TCS机器人研究实验室团队帮助下,他建立了Chitrakar,该系统可以图像转换为由一条直线形成图形,并最终将其转换为Jordan曲线。Chitrakar表示在印地语/梵语中创作画作的人。...然后,增强图像贴上由TSP求解器连接点(其中每个点都被视为旅行推销员目的地)。相交去除技术旅行商最终路线转换为约旦曲线。...Chitrakar可以人脸任何图像自动转换为约旦曲线,该曲线可用于使用机械手来在纸上创建艺术素描。机器人抓手可以握住各种笔,用更细/更粗线条,不同颜色等绘制出不同图画。...他们计划使用Style-GAN和其他生成模型从提供照片中生成肖像,然后将其转换为铅笔素描。

    54210

    WPF、UWP 以及其他各种类型 csproj 迁移成基于 Microsoft.NET.Sdk csproj

    WPF、UWP 以及其他各种类型 csproj 迁移成基于 Microsoft.NET.Sdk csproj 发布于 2018-01-15 16:04...然而组织传统 .NET Framework 类库 csproj 文件却极其庞大且难以理解。而本文提供一种迁移方法,帮助你完成这样迁移,以便体验 csproj 文件带来诸多好处。...其依赖显示也非常简洁: ? 而传统 csproj 文件是怎样呢? <?xml version="1.0" encoding="utf-<em>8</em>"?...自动迁移 自动迁移方法我写了一篇博客,请阅读 自动 NuGet 包引用方式从 packages.config 升级为 PackageReference。...当然,目前自动迁移还只是 NuGet 引用方式改变,加上文件通配符帮助,我们 csproj 文件即使依然是格式,也能非常简洁。

    1.5K20

    容器学习笔记之Googlegcr.io、k8s.gcr.io 换为国内镜像

    "] } EOF 0x01 gcr.io镜像转换为国内镜像 根据开源项目: https://github.com/anjia0532/gcr.io_mirror 作者gcr.io相关镜像pull下来,...然后push到docker官方仓库,相关转换语法如下: 使用语法 # 一般语法 gcr.io/namespace/image_name:image_tag anjia0532/namespace.image_name...:image_tag # 特别语法 k8s.gcr.io/{image}/{tag} gcr.io/google-containers/{image}/{tag} anjia0532...${image}${tag}" done 0x02 pull-google-container 工具脚本 K8Sexapmle里yaml默认是k8s.gcr.io镜像,为了方便运行我们可以预先拉取相关镜像...利用替换已有的yaml方法 除了预先拉取镜像,我们还可以k8s.gcr.io 替换为可执行镜像 为了方便替换,我们编写一个repair_yaml 脚本: # vim /usr/local/bin/repair_yaml

    2.6K30

    Eclipse中导入Maven项目出现红色叹号以及Maven项目无语法错误却显示红叉解决办法

    问题:   从svn或者本地maven工程导入到自己IDE开发环境后,Maven工程上带有红色感叹号报错信息,其他没有红×报错。之后其他Maven项目无语法错误却显示红叉,如下图所示: ?...附加:   其它原因,造成项目感叹号,且pom.xml和Build Path下又没有相应错误提示情况下。     ...那么选择 Windows --> show view --> problems,在这个视图中查看问题原因是什么。   ...其次还有一种可能是因为本地仓库中jar文件有冲突,这个时候建议备份本地仓库,然后删除本地仓库,重新构建项目。这种方法不建议,重新构建项目,下载jar包特别慢!...我们可以比对jar包版本,排除低版本jar。如下图所示: ?

    2.3K20

    JDK8streamlistMap对象时候报错:java.lang.IllegalStateException,解决

    JDK8有很多特性,比如lambda表达式,函数式编程以及stream流使用,这几个特性,使用过之后就爱不释手了,比如list集合通过stream可以直接转换成map对象。...语法: Map map = list.stream.stream().collect(Collectors.toMap(list集合中对象::get属性,list对象别名->list对象别名)); 示例...如下: 错误信息说,employeeId=4429值在集合中有重复。 这个时候怎么解决呢? 我们可以使用toMap另一个重载方法。带有去重方法。...语法: Collectors.toMap(keyMapper, valueMapper, mergeFunction) 源码: 参数说明:     前两个参数都是与之前一样 key 和 value得取值属性..., 第三个参数是当key 发生重复时处理方法,注释上解释如下: 简单一句话: 一种合并函数,用于解决两者之间冲突与提供相同键相关联值到{@link Map#merge(Object, Object

    87120

    C#实现十六进制与十进制相互转换以及及不同进制表示案例分享

    C#中数字进制表示形式对于进制表示,编程语言基本上都提供了特殊前缀表示不同进制数字,一般0x/0X表示16进制、0o/0O表示8进制、0b/0B表示2进制,十进制数字则没有特殊前缀,直接输入数字即可...C#中没有对8进制数字直接表示形式。对于这个几乎用不到历史遗留进制,编程中很少会使用。通常比较常用是2进制和16进制。...4Convert.ToInt32(hexStr,16)同理,可以根据需要,2进制、8进制字符串转换为10进制int类型。...dec.ToString("x2") 或 dec.ToString("x") 中使用小写x,则转换为对应小写16进制字符串,比如15换为"f"或"0f"。【X对应为大写】。...Convert.ToString()实现将数字转换为特定进制字符串decimal_2分别转换为16进制、8进制、2进制字符串6var decimal_2 = 15;Console.WriteLine

    2.7K11

    C#历来语法特性总结

    扩展方法是一种静态方法,不过是通过实例对象语法进行调用,它第一个参数指定方法操作类型,用this修饰。编译器在编译为IL时会转换为静态方法调用。...); switch表达式 从C# 8开始,可以使用switch表达式。.... ; return; // file is disposed here } 索引和范围 C# 8中添加了索引和范围功能,为访问序列中单个元素或范围提供了简洁语法。...该语法依赖两个类型与两个运算符: System.Index表示一个序列索引; System.Range表示序列子范围; 末尾运算符^,使用该运算符加数字,指定倒数第几个; 范围运算符.....=合并赋值运算符:C# 8后可用,仅在左侧操作数求值结果为null时,才右操作数值赋值给左操作数。否则,不会计算其右操作数。??=运算符左操作数必须是变量、属性或索引器元素。 // ??

    39840

    电脑小白学习软件开发-C#选择语句、异常捕获,进攻程序员

    我们目标是:玩得服务器Web开发,搞得懂移动端,电脑客户端更是不在话下。 不得不说,C#这门语言是小编以为最好语言。其优美的语法,最具人性化特性,以及无敌开发工具令人陶醉。...接触过不少语言,却一直回味写C#那种状态。 本人认为目前C#是比较适合入门语言,最为小白,热衷于电脑编程开发的人,可谓是一个大大福利。...语法讲解:if 可以理解为如果意思。 if后面跟着小括号,小括号代表是条件。条件成立则执行小括号后大括号里面的内容。 例如上图流程大致为: else 表示 上面条件都不成立执行else代码。...switch语法: 与if相比较来说switch就不怎么好用了。例如下图: ? //switch只能区别不同单个项目。...判断s值是什么,然后执行对应代码, //所以我们把成绩,除以十 把它商作为 switch项目 //break:代表:停止执行switch代码。

    45620

    细说枚举

    枚举是 C# 中最有意思一部分,大部分开发人员只了解其中一小部分,甚至网上绝大多数教程也只讲解了枚举一部分。那么,我通过这篇文章向大家具体讲解一下枚举知识。...对于枚举类型变量,值不限于声明中命名值,因此值能转换成基础类型,那么就能转换为枚举类型。之所以这么设计是因在以后 API 中有很大可能在不破换老版本同时为枚举添加值。...字符串转换为枚举也很简单,同样用到了 Enum 基类一个静态方法 Parse ,例如我们 JP 转换为枚举 Country 枚举值可以这么做 (Country)Enum.Parse(typeof(...3.枚举和数字之间转换 枚举转换为数字我们可以使用强,例如 (int)Country.CN返回结果是 0 。...从数字转换为枚举我们有两种方法,一种是使用强,另一种是使用 Enum 静态方发 ToObject 。

    1.9K10
    领券