C# 对位模式
2023-01-14 22:22 作者:SunnieShine | 我要投稿
1、语法
X
和 Y
是 Point
Deconstruct
方法,然后带有两个参数:x
和 y
,它们都是 out int
通过这样的赋值后,我们就可以通过这个解构来完成数据的解构了:
当然,在模式匹配的时候,我们可以使用这样的代码对上面的写法进行简化:
不过,这样还不是很好看。因此 C# 还有这样的对位模式匹配:
x
和 y
,是因为解构函数的参数分别是 x
和 y
,这是一一对应的。正是因为如此,这个模式才叫做对位模式。其中,因为它借助了解构函数,而解构后的对象分配使用的是一对小括号(var (x, y) = point;
这个语句),因此为了配合这个写法,也用的是小括号。只是这里需要写出解构参数的名字。
稍微注意一点的是,C# 允许在同一个数据类型下定义多个解构函数,所以这正是为什么必须给出解构参数名称的原因。除非这个类型就这一个解构函数,那么我们都必须写出解构参数名。
2、主构造器的对位模式
C# 9 和 C# 10 分别诞生了记录类型和记录结构类型,它们必须绑定一个主构造器位于声明的头部:
在使用模式匹配的时候,由于编译器会自动生成对应的解构函数,因此我们可以直接对主构造器使用对位模式匹配。
其中,小括号 (Name: "Sunnie", Age: 25, _)
左侧的数据类型类似于 obj is T t
的 T
,而小括号书写出来的对位模式,则是 C# 允许的语法。它们甚至可以写在一起。当然,如果类型一样就不必判断类型了。
3、调用扩展方法的对位模式
同时,编译器也能够嗅探扩展方法。换句话说,对位模式也允许扩展方法的解构函数。因此,C# 也允许调用扩展方法的解构函数来对位判断元素信息。
T[]