欢迎光临散文网 会员登陆 & 注册

C# 类型模式

2023-01-15 10:52 作者:SunnieShine  | 我要投稿

1、语法

与其单独讲类型模式,还不如让你先明白,声明模式的那个类型,就是类型模式。

所以,你干脆理解成这样:“声明模式 = 类型模式(就是这个类型)+ 变量定义”。但是,单独提出来说,是有原因的。

2、不支持可空类型的类型模式

C# 8 开始拥有可空引用类型,而在 C# 2 开始则拥有可空值类型。这两种数据类型都带有 ? 标记类型是可空的。不过,这些类型并不能使用到类型模式之中。

这两种都是错误的。原因很简单:因为 is 是匹配类型,因此它必须得是这个类型。而既然都是这个类型的数据了,那么为何还去匹配一个可空类型呢?假设 objint 类型的数据,那么 int is int? 合理吗?显然不合理。int is int 才合理。那 null is int? 吗?null 是没数值的可空类型的默认数值,它不包含任何数值,因此 is 匹配它是没有意义的。

正是因为这些原因,你无法在 is 后使用和声明可空类型作为类型模式——因为是没有意义的。

3、声明模式弃元

在 C# 里,switch 语句可以专门对一个不知道是什么类型的东西作模式匹配:

这里,C# 也是允许的。可问题在于,arrenumerable 等变量如果不用,我们无法去掉:C# 9 之前,这个变量是不可省去的:即使不用,你也得写弃元符号:_

不过,从 C# 9 开始,弃元符号就可以不写了。于是乎,模式匹配就可以简写成真正的类型模式了:


C# 类型模式的评论 (共 条)

分享到微博请遵守国家法律