C#9模式匹配

2021-04-08 01:24:34

我们C#9系列中的前一篇文章看起来看看顶级程序和目标类型表达式。在本文中,我们将介绍模式匹配的新功能。您可以在C#8模式匹配中找到以前版本的C#所提供的语法的概述。

在检查类型时,先前版本的C#需要您包含变量名称(或_丢弃)。 C#9不再需要这一点:

//是类型的模式 如果(输入是人) ...... //案例模式与类型 开关(输入) { 案例人: ...... //是元组型的模式 if(输入是(int,string)) ......

使用早期版本的C#中的表达式,您可以使用常规逻辑运算符组合模式:

但是,这不适用于切换表达式和切换盒标签。 C#9为使用AND and and and and and and and and and and或关键字而组合模式的支持,它适用于IF和Switch:

如果(人是学生或教师) ...... 十进制折扣=人交换机 { 学生或教师=> 0.1米, _ => 0. }; 开关(人) { 案例学生或老师: ......

和图案的优先级比或模式更高。您可以添加括号以更改或澄清优先级。

一个有趣的案例是不是空模式。 这将检查引用是否没有空。 使用!= null可以在over-= operator over oper over时检查一些不同的东西。 十进制折扣=年龄开关 { < = 2 => 1, < 6 => 0.5米, < 10 => 0.2m, _ => 0. }; 模式还可以包含其他模式。 此嵌套可让您以简洁可读的方式表达复杂的条件。 以下示例结合了多种类型的模式: 在本文中,我们查看了C#9中的新模式匹配功能。添加允许您在清晰,简洁的语法中表达更复杂的条件。