例子

我们首先定义一个颜色枚举

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 表达式】相关推荐

  1. java8 ie_Java8语法糖之Lambda表达式_Hudie.的博客-CSDN博客

    原文作者:编程一只蝶 原文标题:Java8语法糖之Lambda表达式 发布时间:2021-02-16 13:08:40 一.Lambda表达式简介 Lambda表达式,是Java8的一个新特性,也是J ...

  2. Java8语法糖之Lambda表达式

    文章目录 一.Lambda表达式简介 二.Lambda表达式语法 三.函数引用 1.静态方法引用 2.非静态方法引用 3.构造方法引用 4.对象方法的特殊引用 四.Lambda表达式需要注意的问题 一 ...

  3. Java中switch参数传null会引起异常——Java 语法糖

    问题 switch 参数不能是null,swicth(null)会报java.lang.NullPointerException异常 查找原因 为什么会这样呢,查找一下原因: 找到编译后的class文 ...

  4. switch(String)语法糖解析

    switch(String)语法糖解析 Java1.5之前,switch语法结构仅支持int, byte, short, char这几个基本类型(及对应的包装类型). 1.5后提供了enum枚举结构. ...

  5. python 连续比较_python语法糖之连续比较表达式

    关于python的连续比较的语法糖 比如有如下形式: (a < b) and (b < c),这样子看起来不够好看. python中提供了连续比较的语法糖: a < b < c ...

  6. Java 中的语法糖,真甜。

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱.内部 ...

  7. Java的12个语法糖【转】

    本文转载自公众号  Hollis 原创: 会反编译的 Hollis 侵权删 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学 ...

  8. 浅析java中的语法糖

    概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...

  9. 不了解这12个语法糖,别说你会Java!

    作者:Hollis 微信公众号:Hollis 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的 ...

最新文章

  1. linux设置逻辑卷进不了图形界面,LVM逻辑卷管理器图形界面操作
  2. 小米手机能用上鸿蒙吗,鸿蒙系统小米手机能用吗?鸿蒙系统支持第三方手机!
  3. 京东五星电器送扫地机器人_京东五星电器联手打造互联网小家电“孵化器”
  4. asp.net利用RAR实现文件压缩解压缩(转)
  5. Linux 忘记 用户名密码
  6. 10-Mybatis 多表查询之多对多
  7. 微信开源推理加速工具 TurboTransformers,性能超越 PyTorch/TensorFlow 与主流优化引擎
  8. 什么是联表查询?(深度刨析,建议收藏)
  9. C#获取文件/文件夹默认图标
  10. matlab实现贝叶斯,最简单的贝叶斯分类器MATLAB实现
  11. react 脚手架配置代理
  12. 运维监控系列(4)-Prometheus控制台功能详解
  13. 使用urjtag了解WRV54G
  14. python使用pandas读取excel绘制柱状图,折线图,饼状图
  15. linux版英特尔酷睿i7,英特尔酷睿i7 1165G7和AMD Ryzen 7 Pro 4750U Linux性能对比
  16. 【时间函数】gettimeofday
  17. 关于Unity LitJson写入数据报错的问题
  18. PS色阶工具定义【转】
  19. java 检测网络图片大小_用security.imgSecCheck检测网络图片(Java实现)
  20. 微信小程序web-view内嵌公众号网页分享功能实现

热门文章

  1. STM32 MCP2515连发 多发 MCP2515收发程序 多路CAN通信 2路CAN
  2. css3 logo 自上而下动画 渐渐出现
  3. 45、优惠券秒杀(实现一人一单)
  4. 6000字长文,终于将数据中台架构体系讲明白了
  5. 《数据库系统》(二) 关系数据库
  6. CMake入门教程【核心篇】7.1项目版本号宏
  7. 仿微信发送位置(高德地图定位)
  8. 基于proteus的51单片机仿真实例二、关于proteus
  9. 2021-03-13-BrainTechnology公众号汇总3月
  10. 计算机类工程硕士研究生实践报告,工程硕士实践的总结报告.docx