VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • C#教程之C# 8 的模式匹配(3)

 

还想判断他的老师是否教数学,可以这样写: 

O references 
IsFifthGradeMath(Student student) 
public bool 
return student is Student( 
5, Teacher(_, "Math"));

 

注意,这里面调用的都是Deconstructor 

 

实际上,我们可以把Deconstructor的类型去掉,像这样: 

IsFifthGradeMath(Student student) 
public bool 
return student is ( 
5 (_, "Math"));

 

实际上针对这种需求,使用if语句可能更好,更容易维护。但是如果循环嵌套的情况下无法使用if,那么这种位置模式匹配就有用了。 

 

属性匹配模式 

位置匹配模式很强大,但是可阅读性太差,下面看看属性匹配模式 

 

还是之前的需求: 

O references 
IsFifthGradeMath(Student student) 
public bool 
return student is { Grade: 5, Teacher:{ Subject: 
"Math"

我想这个一看就明白,不需要解释了吧? 

 

而且这个方法可以写的更通用一些: 

(object obj) 
public bool 
IsFifthGradeMath 
return obj is Student s 88 
s is { Grade: 5, Teacher:{ Subject: 
"Math"

参数类型改为object,然后先判断它是不是Student,在判断是否是5年级学数学的。 

 

Swtich 表达式

有三个形状的类,它们的属性各不相同: 

相关教程