.NET 6新特性试用 | 模式匹配之Extended Property Patterns
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET 6新特性试用 | 模式匹配之Extended Property Patterns相关的知识,希望对你有一定的参考价值。
前言
模式匹配是一种测试表达式以确定其是否具有某些特征的技术。
例如, 下面的Employee类和Manager类:
public class Employee
public int Id get; set;
public string Name get; set;
public Manager? Manager get; set;
public class Manager : Employee
public string Position get; set;
我们可以使用模式匹配,检查Employee实例变量的实际类型并且匹配其属性,如下所示:
Employee obj = new Manager Id=1, Name="zhangsan", Position="CEO" ;
if(obj is Manager Position: "CEO" ceo)
Console.WriteLine(ceo.Name);
;
Extended Property Patterns
如果要使用模式匹配检查变量嵌套的属性,则书写起来比价复杂,如下所示:
if(obj is Employee Manager: Name:"lisi", Manager: Position: "CEO" employee)
而在.NET 6中,我们可以使用.
引用属性的嵌套成员,这种方式称为Extended Property Patterns(扩展属性模式)。
将上面的代码改写后如下:
if(obj is Employee Manager.Name:"lisi", Manager.Manager.Position: "CEO" employee)
另外,使用扩展属性模式不仅可以引用类定义的嵌套属性,同时还可以使用嵌套属性原生类型的属性,如下所示:
if(obj is Employee Manager.Name.Length:4 employee)
结论
需要注意的是,如果变量的Manager属性为null,或者任何嵌套属性为null 都不会得到NullReferenceException。因为在这里编写模式是为了检查对象是否匹配,而不是使用代码直接访问该属性。
这意味着,如果Manager属性为null,则模式Manager.Name:"lisi"不匹配,则上面if语句的条件计算结果为false,仅此而已。
利用Extended Property Patterns这种简化的语法,可以使模式匹配表达式更易于阅读,特别是对于嵌套较深的类型。
如果你觉得这篇文章对你有所启发,请帮忙点个赞或者在看
以上是关于.NET 6新特性试用 | 模式匹配之Extended Property Patterns的主要内容,如果未能解决你的问题,请参考以下文章