0

0

C# 中的模式匹配列表模式如何匹配序列?

幻夢星雲

幻夢星雲

发布时间:2025-10-05 13:35:02

|

541人浏览过

|

来源于php中文网

原创

列表模式是C#11引入的特性,用于在switch或is表达式中按顺序匹配数组或列表结构。通过方括号[]定义元素模式,支持常量、变量、通配符_和..范围匹配。可实现精确值判断、变量提取、忽略特定位置或捕获子序列,适用于解析固定结构数据、函数式分支和输入验证。示例中Describe方法利用该特性分类数组情形,提升代码可读性与表达力。

c# 中的模式匹配列表模式如何匹配序列?

在 C# 中,列表模式(List patterns)是 C# 11 引入的新特性,允许你直接在 switch 表达式或 is 模式中匹配数组或列表的结构。它通过解构序列的元素来判断是否符合指定模式。

基本语法与匹配逻辑

列表模式使用方括号 [] 包裹一系列子模式,按顺序匹配序列中的元素。每个位置可以是常量、变量、通配符 _ 或嵌套模式。

例如:

int[] numbers = [1, 2, 3];

if (numbers is [1, 2, 3]) { Console.WriteLine("完全匹配"); }

这段代码会输出“完全匹配”,因为数组的每个元素都与模式中对应位置的值一致。

使用通配符和变量提取

你可以用 _ 忽略某些位置的值,或者声明变量捕获具体元素。

if (numbers is [1, var middle, _])
{
    Console.WriteLine($"中间值是 {middle}"); // 输出:中间值是 2
}

这个模式要求第一个元素是 1,第二个任意但赋给 middle,第三个忽略。只要数组长度为 3 且前两个满足条件就匹配。

e网企业2.0
e网企业2.0

一款适用于中小企业自助建站程序,是c#与xml技术相结合的产物,支持动态设定二级栏目,采用了开放式架构,建站模版自由添加。程序整合了(单一文本,新闻列表,图片列表 ,在线订单, 文件下载 , 留言板)六类插件,以所见即所得的方式,将烦锁的建站过程简化到三步,使用户可以轻松上手。 管理后台:manage.aspx 初始密码均为admin

下载

处理可变长度序列

使用 .. 可以匹配零个或多个元素,实现对部分序列的忽略或截取。

int[] longer = [1, 2, 3, 4, 5];

if (longer is [1, .. var rest]) { Console.WriteLine($"剩余元素: [{string.Join(",", rest)}]"); // 输出:剩余元素: [2,3,4,5] }

.. var rest 将从第二个元素开始的所有项收集到一个数组中。也可以放在中间:

if (longer is [1, .., 5])
{
    Console.WriteLine("以 1 开头,5 结尾");
}

这能匹配任何以 1 开始、5 结束的非空序列,无论中间有多少元素。

常见应用场景

  • 解析固定结构的数据:比如 HTTP 状态码响应、命令行参数等。
  • 函数式风格的条件分支:用 switch 表达式返回不同结果。
  • 验证输入格式:检查数组是否符合预期形状。

示例:

string Describe(int[] digits) => digits switch
{
    [] => "空数组",
    [0] => "单个零",
    [1, 2] => "一对数字",
    [_, .. var others] when others.Length >= 2 => "至少三个元素",
    [..] => "其他情况"
};

基本上就这些。列表模式让 C# 能更直观地处理集合结构,写起来接近脚本语言的模式匹配,同时保持类型安全。关键是理解顺序匹配、通配符和范围省略号的作用方式。

相关专题

更多
c#是什么意思
c#是什么意思

C#是一种通用的面向对象编程语言,它在.NET框架上运行,可用于开发各种类型的应用程序。本专题为大家提供c#相关的各种文章、以及下载和课程。

262

2023.08.08

什么是c#
什么是c#

C#(读作C Sharp)是一种现代的、通用的、面向对象的编程语言。它由微软公司开发,于2000年首次发布,主要用于开发Windows桌面应用程序、Web应用程序、移动应用程序以及游戏开发等领域。C#是一种类型安全和托管的编程语言,它结合了C++的强大性能和C语言的简单易学特点,并引入了许多新的特性和概念,如委托、属性、泛型和异步编程等,以提高开发效率和代码可维护性。

181

2023.08.31

C#中base关键字的用法
C#中base关键字的用法

在C#中,base关键字用于访问当前类的基类成员,这包括基类的字段、属性、方法、构造函数、索引器以及事件。想了解更多C#的相关内容,可以阅读本专题下面的文章。

297

2024.03.13

C#Task用法
C#Task用法

Task在C#中是用于表示异步操作的对象,它位于System.Threading.Tasks命名空间中。想了解更多C#中各种用法的相关内容,可以阅读本专题下面的文章。

348

2024.03.14

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1465

2023.10.24

switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

532

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

412

2024.03.13

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

357

2023.11.09

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.8万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号