c#语法糖模式匹配【switch 表达式】
例子
我们首先定义一个颜色枚举
public enum ColorEnum{ Red,Blue,Black,}
我们写一个方法获取颜色的RGB值,我们这里使用Switch表达式,传统做法是:switch 语句在其每个 case 块中生成一个值,比如这样
private Color GetColorRgb(ColorEnum colorEnum){switch (colorEnum){case ColorEnum.Red:return Color.FromArgb(0, 0, 0);case ColorEnum.Blue:return Color.FromArgb(0, 0, 0);case ColorEnum.Black:return Color.FromArgb(0, 0, 0);default:throw new ArgumentException(message: "invalid enum value", paramName: nameof(ColorEnum));}}
但是这样让人觉得有重复的Case,break关键字,使得代码看来不是那么的简洁,所以C#8.0中借助 Switch 表达式,可以使用更简洁的表达式语
private Color GetColorRgb(ColorEnum colorEnum){return colorEnum switch{ColorEnum.Red => Color.FromArgb(0, 0, 0),ColorEnum.Blue=> Color.FromArgb(0, 0, 0),ColorEnum.Black=> Color.FromArgb(0, 0, 0),_ => throw new ArgumentException(message: "invalid enum value", paramName: nameof(ColorEnum));};}
这里有几个语法改进:
•变量位于 switch 关键字之前。不同的顺序使得在视觉上可以很轻松地区分 switch 表达式和 switch 语句。•将 case 和 : 元素替换为 =>。它更简洁,更直观。•将 default 事例替换为 _ 弃元。•正文是表达式,不是语句。我在前面的一篇文章【你真的了解Lambda吗】说过,如果最后一句是Return表达式的时候,我们呢可以把Return和{}这个关键字去掉使用=>代替!
private Color GetColorRgb(ColorEnum colorEnum)=> colorEnum switch{ColorEnum.Red => Color.FromArgb(0, 0, 0),ColorEnum.Blue => Color.FromArgb(0, 0, 0),ColorEnum.Black => Color.FromArgb(0, 0, 0),_ => throw new ArgumentException(message: "invalid enum value", paramName: nameof(ColorEnum));};
最后大家如果喜欢我的文章,还麻烦给个关注并点个赞, 希望net生态圈越来越好!
c#语法糖模式匹配【switch 表达式】相关推荐
- java8 ie_Java8语法糖之Lambda表达式_Hudie.的博客-CSDN博客
原文作者:编程一只蝶 原文标题:Java8语法糖之Lambda表达式 发布时间:2021-02-16 13:08:40 一.Lambda表达式简介 Lambda表达式,是Java8的一个新特性,也是J ...
- Java8语法糖之Lambda表达式
文章目录 一.Lambda表达式简介 二.Lambda表达式语法 三.函数引用 1.静态方法引用 2.非静态方法引用 3.构造方法引用 4.对象方法的特殊引用 四.Lambda表达式需要注意的问题 一 ...
- Java中switch参数传null会引起异常——Java 语法糖
问题 switch 参数不能是null,swicth(null)会报java.lang.NullPointerException异常 查找原因 为什么会这样呢,查找一下原因: 找到编译后的class文 ...
- switch(String)语法糖解析
switch(String)语法糖解析 Java1.5之前,switch语法结构仅支持int, byte, short, char这几个基本类型(及对应的包装类型). 1.5后提供了enum枚举结构. ...
- python 连续比较_python语法糖之连续比较表达式
关于python的连续比较的语法糖 比如有如下形式: (a < b) and (b < c),这样子看起来不够好看. python中提供了连续比较的语法糖: a < b < c ...
- Java 中的语法糖,真甜。
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱.内部 ...
- Java的12个语法糖【转】
本文转载自公众号 Hollis 原创: 会反编译的 Hollis 侵权删 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学 ...
- 浅析java中的语法糖
概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...
- 不了解这12个语法糖,别说你会Java!
作者:Hollis 微信公众号:Hollis 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的 ...
最新文章
- linux设置逻辑卷进不了图形界面,LVM逻辑卷管理器图形界面操作
- 小米手机能用上鸿蒙吗,鸿蒙系统小米手机能用吗?鸿蒙系统支持第三方手机!
- 京东五星电器送扫地机器人_京东五星电器联手打造互联网小家电“孵化器”
- asp.net利用RAR实现文件压缩解压缩(转)
- Linux 忘记 用户名密码
- 10-Mybatis 多表查询之多对多
- 微信开源推理加速工具 TurboTransformers,性能超越 PyTorch/TensorFlow 与主流优化引擎
- 什么是联表查询?(深度刨析,建议收藏)
- C#获取文件/文件夹默认图标
- matlab实现贝叶斯,最简单的贝叶斯分类器MATLAB实现
- react 脚手架配置代理
- 运维监控系列(4)-Prometheus控制台功能详解
- 使用urjtag了解WRV54G
- python使用pandas读取excel绘制柱状图,折线图,饼状图
- linux版英特尔酷睿i7,英特尔酷睿i7 1165G7和AMD Ryzen 7 Pro 4750U Linux性能对比
- 【时间函数】gettimeofday
- 关于Unity LitJson写入数据报错的问题
- PS色阶工具定义【转】
- java 检测网络图片大小_用security.imgSecCheck检测网络图片(Java实现)
- 微信小程序web-view内嵌公众号网页分享功能实现