C# 11 新特性:列表模式匹配

之前

使用模式匹配,可以测试表达式结果是否等于指定的常量或者在某个范围内:

public static string Demo(int number)
{return number switch{100 => "A",>=90 =>"B",_ => "C"};
}

上面的代码,执行逻辑如下:

  • 当传入的变量等于100,返回结果A;

  • 当传入的变量大于等于90,返回结果B;

  • 默认情况下,返回结果C;

但是,无法对数组进行模式匹配,比如数组中有一个元素等于100,返回结果A

C# 11

从 C# 11 开始,可以将数组或列表与匹配元素的模式序列匹配。可以应用以下任一模式:

  • 检查单个元素是否与某些特征匹配

public static string Demo(int[] numbers)
{return numbers switch{[100] => "A",[>=90] => "B",_ => "C"};
}

必须与数组的元素完全匹配,例如数组有 2 个元素就只能返回结果C

  • 弃元模式 (_) 与单个元素匹配

[_, 100] => "A",
[>=90, _] => "B",

例如[90,100]返回结果A,[90,80]返回结果B

  • 范围模式 (..) 可以匹配序列中的零个或多个元素。但是最多允许列表模式中的一个范围模式

[.., 100] => "A",
[>=90, ..] => "B",

例如[80,90,100]返回结果A,[90]返回结果B

  • var 模式可以捕获单个元素或多个元素

[var number, 100,.. var array] => $"{number},{string.Join(",",array)}",

例如[80,100]返回结果80,[80,100,70,60]返回结果80,70,60

将列表模式的代码反编译,可以看到,代码其实是用if-else实现的。列表模式只是 C# 11 为我们提供的一个语法糖

0c45fc5b50f8765fa7b701b30c0a5dd4.png

添加微信号【MyIO666】,邀你加入技术交流群

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

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

相关文章

G2 2.0 更灵活、更强大、更完备的可视化引擎!

概述 G2作为一款技术产品,自诞生以来,服务于广大的Web工程师群体和一部分数据分析师。一直来,G2 因其易用的语法和扎实的可视化理论基础,广受使用者好评。G2 1.x 的可视化能力已经非常强大,使用者已经能够在掌握图形语…

《iVX 高仿美团APP制作移动端完整项目》07 会员页制作

会员页如下: 一、会员页标题制作 会员页的标题是顶部的提示字样,该字样咱们可以分析,可以使用两个文本组件,每个占据一行: 首先咱们创建一个页面命名为会员中心: 接着在会员中心下创建一个行&#xff…

【ArcGIS风暴】ArcGIS添加超链接的两种方法详解

文章目录 1. 在识别对话框中添加超链接2. 利用属性字段添加超链接在ArcGIS中,可以很方便的设置文档超链接和URL超链接,设置完成后,只需要点击某个图斑就可以跳到指定的地址。本文详细讲解ArcGIS中超链接的设置方法。 1. 在识别对话框中添加超链接 启动软件,加载甘肃省行政…

Android Studio目录结构分析

Android studio 目录结构1. .gradleGradle编译系统,版本由wrapper指定2. .ideaAndroid Studio IDE所需要的文件3. app3.1 app/buildapp模块编译输出的文件3.2 app/libs放置引用的类库文件3.3 app/src放置应用的主要文件目录3.4 app/.gitgnoregit使用的ignore文件3.5…

《iVX 高仿美团APP制作移动端完整项目》08 会员页 标题、会员卡 制作

一、分类制作 我们接着往下制作该页的下半部分内容: 由于对应最下部分的商家推荐重复,直接复制即可,在此不做过多的讲解: 接下来我们创建一行命名为内容,用以作为下半部分的容器: 接着我们制作第一个种…

微软AI插件Github Copilot初体验

前言上个月看到了一款插件 微软 GitHub AI 编程工具 Copilot于是就想尝尝鲜,但是GitHub Copilot是需要申请的,只有申请通过的才能使用这款插件。就在今天我收到审核通过的邮件。于是想看看这插件是不是像其它网友说的那样强!使用于是打开了我…

Android开发 人民币符号(¥)显示不一致的问题

不小心踩了个坑,发现这个人民币符号在不同机器上显示不一致,有的显示一横,有的显示两横。 百度查了一下,找到好很多解决办法,改字体,用图片等等。 最后发现原来用的是全角的“¥”的原因&#xf…

《iVX 高仿美团APP制作移动端完整项目》09 订单页制作

订单页制作比较简单,界面如下: 一、标题 首先创建一个页面,命名为订单页,并且给予背景色为黄色: 随后创建一个行,命名为主要并给予对应的基础属性: 接着给予这个主要行对应的上下内边距使其…

AutoDesk CAD 2014安装VBA Enabler图文教程(附AutoCAD_2014_VBA_Win_64bit下载)

在利用CASS将dwg地形图转为ArcGIS支持的Shapefile格式数据时,为了提高转换效率,通常我们会写一些VBA代码来实现,但是VBA不提供与AutoCAD OEM 安装介质,需要单独下载VBA环境。 Visual Basic for Applications (VBA) 引擎不再提供与 AutoCAD OEM 安装介质。 请联系您的 Auto…

开源项目 英雄联盟 之WPF

WPF 英雄联盟作者:Devncore 组织 来自 韩国,首尔原文链接:https://github.com/devncore/leagueoflegends感谢分享者晨晞gg[1];框架使用.NET6;C# 10.0;Visual Studio 2022;您可以了解如何正确实施 WPF 项目。描述了如何…

java中try 与catch的使用

(2011-10-08 17:08:43) 转载▼标签: 杂谈 分类: Javatry{//代码区}catch(Exception e){//异常处理}代码区如果有错误,就会返回所写异常的处理。 首先要清楚,如果没有try的话,出现异常会导致程序崩溃。而try则可以保证…

iVX 倒计时制作

需求:点击开始计时计时,并且开始计时按钮文本编程停止计时文本,点击记录事件可以记录当前时间并显示到下面的记录时间列中。 一、页面制作 首先创建一个相对应用项目,命名为计时器: 接着创建一个页面,设…

打造自己的装机U盘(二)

打造自己的装机U盘(二)二、 在PE U盘加入系统安装的GHOST镜像文件现在我们在上篇的PE U盘加入系统安装的GHOST镜像文件。这一步其实最简单,说白了就是搞一个GHOST文件复制、粘贴到u盘。系统安装的GHOST镜像文件从何而来?百度、谷歌输入“GHOS…

到底什么是国土空间规划?

文章目录 一、什么是国土空间规划?二、为什么要建立国土空间规划体系?三、国土空间规划的主要目标是什么?四、国土空间规划的编制要求是什么?五、国土空间规划体系由哪几部分组成?六、国土空间规划分哪几个层级?七、国土空间规划分哪几个类型?八、国土空间总体规划、详细…

Bootstrap入门(八)组件2:下拉菜单

Bootstrap入门&#xff08;八&#xff09;组件2&#xff1a;下拉菜单先引入本地的CSS文件和JS文件&#xff08;注&#xff1a;1.bootstrap是需要jQuery支持的。2.需要在<body>当中添加&#xff09;<link href"css/bootstrap.min.css" rel"stylesheet&q…

MAUI 迁移指南

前言为了能够让大家更好的理解全新的MAUI框架, 那么本次迁移指南主要给大家讲解从Xamarin.Forms升级到MAUI带来了哪些全新的变化, 下面将围绕以下几点给大家重点介绍。单个代码库演变启动配置演变统一资源管理依赖注入隐式using 指令Essentials合并全新命名空间您仅需要具备Xam…

ivx动效按钮 基础按钮制作 01

一、准备工作 首先创建一个相对定位应用&#xff1a; 接着创建一个页面&#xff1a; 随后我们切换一下屏幕&#xff0c;更改为 PC 端 web&#xff0c;因为手机移动端一般是没有鼠标悬浮事件的&#xff1a; 为了使按钮显示方便观察&#xff0c;我们设置水平和垂直对其为居中…

android中xml tools属性详解

第一部分 安卓开发中&#xff0c;在写布局代码的时候&#xff0c;ide可以看到布局的预览效果。但是有些效果则必须在运行之后才能看见&#xff0c;比如这种情况&#xff1a;TextView在xml中没有设置任何字符&#xff0c;而是在activity中设置了text。因此为了在ide中预览效果&a…

Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析

在前面一篇文章Android系统匿名共享内存Ashmem&#xff08;Anonymous Shared Memory&#xff09;驱动程序源代码分析中&#xff0c;我们系统地介绍了Android系统匿名共享内存的实现原理&#xff0c;其中着重介绍了它是如何辅助内存管理系统来有效地管理内存的&#xff0c;在再前…

转帖-Linux学习(Find命令使用实例)

为什么80%的码农都做不了架构师&#xff1f;>>> find / -name httpd.conf find / -name access_log 2>/dev/null find /etc -name *srm* find / -amin -10 # 查找在系统中最后10分钟访问的文件 find / -atime -2 # 查找在系统中最后48小时访问的文件 find / -mm…