c#入门-模式匹配

模式匹配”是一种测试表达式是否具有特定特征的方法。
C# 模式匹配提供更简洁的语法,用于测试表达式并在表达式匹配时采取措施。

  • 模式匹配需要使用 is 关键字来启用。
  • 模式匹配仅接收常量输入。
  • 模式匹配使用专用的语法规则。
    这种做法的意义在于,不接收用户自定义的运算符或自定义类型转换规则。
    但是几种基础的数字类型除外。
  • 模式匹配大多数都会得到一个bool值,来指示是否匹配成功。

与运算符相似的模式

常量

在与常量比较时不需要使用等于号。
在这里插入图片描述
如果一个类型可能可以是目标类型,那么可以直接对其使用目标类型来判断。
不需要先经过类型转换。
在这里插入图片描述

关系

如果被判断的值可能是数字类型,可以使用关系运算符(等于和不等于除外)进行关系判断。
在这里插入图片描述

逻辑

模式匹配使用三个关键字:and,or,not来代替 与或非 运算符
模式匹配只会执行一次取值,所以如果逻辑条件可以覆盖所有情况,会得出常量。
在这里插入图片描述

括号

使用逻辑模式时,也可以使用括号改变优先级顺序。
默认情况下模式匹配会先判断与,再判断或
在这里插入图片描述

类型

模式匹配可以判断是否为某一种类型。
在之后的与关系模式中,可以假设判断假设是这种类型的情况。
在这里插入图片描述
类型模式判断的是值的实际类型。null检测不出任何类型。
如果以可空值类型为条件进行判断,则不能附加其他任何条件。

检测内容的模式

属性

属性模式可以对值的属性进行模式匹配。
使用一对大括号展开属性,然后用属性名+冒号+模式来判断。
多个属性使用逗号隔开。

任何检测内容的模式,都会预检测被判断的值不为null。
一个不检测任何属性的属性模式,效果相当于一个非空判断。
在这里插入图片描述
属性模式内的模式是独立的模式,也就是说可以继续对他们使用属性模式。

位置

位置模式是针对元组的模式,每个元素使用逗号隔开。
可以在模式匹配的同时对其进行析构。并对每一个元素进行模式匹配。
在这里插入图片描述

列表

列表模式是针对数组或类似的类型生效的。
可以展开内部的元素,并逐个进行模式匹配。
列表模式使用中括号展开,使用逗号分隔。
在这里插入图片描述
列表模式也会同时校验元素的数量。
只有数量也匹配时才会匹配。

范围

使用列表模式时,可以使用范围模式。
范围模式可以代表不限数量(可以是0个)的中间的元素。
范围模式在同一个列表模式中,只能最多存在一个。

范围模式使用两个点,表示中间省略的元素。
在这里插入图片描述

弃元

对于位置模式,和列表模式等有先后顺序的元素,可以使用弃元不对其进行模式匹配。
在这里插入图片描述

声明模式

类型

在使用类型模式时,可以声明一个该类型的变量。
在这里插入图片描述
但是如果没有流程控制语句为其保证,其他地方会认为这是一个没有赋值的变量。

类型模式可以使用and连接其他条件,但不能接or。
如果要使用not,只能用在开头。并且此时会变成,如果匹配则没有赋值局部变量。
在这里插入图片描述

var

var可以匹配任何元素,是声明模式下对弃元模式的替代。
在模式匹配的同时进行对匹配到的元素进行声明变量,
可以弥补模式匹配不能接收变量的缺点。
在这里插入图片描述

范围

在使用范围模式时,也可以结合var模式声明一个变量。
取出来的类型,和直接使用索引+范围一样。
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值