vehicle switch
{
...
Car c => 2.00m - 1.0m
}
我们其实可以发现,上面的变量 c 声明了却没用被使用,现在 C# 9.0 中可以把它省略了:
vehicle switch
{
...
Car => 2.00m - 1.0m
}
关系模式
以上面 CalculateToll 方法示例代码为例,关系模式是通过比较(大小)关系来匹配的,对应的代码片段如下:
DeliveryTruck t when (t.GrossWeightClass > 5000) => 10.00m + 5.00m, DeliveryTruck t when (t.GrossWeightClass < 3000) => 10.00m - 2.00m, DeliveryTruck _ => 10.00m,
现在 C# 9.0 可以简写成:
DeliveryTruck t when t.GrossWeightClass switch
{
> 5000 => 10.00m + 5.00m,
< 3000 => 10.00m - 2.00m,
_ => 10.00m,
}
逻辑模式
在 C# 9.0 中,你可以通过逻辑操作符 and、or 和 not 对模式进行组合,下面是一些示例:
DeliveryTruck t when t.GrossWeightClass switch
{
< 3000 => 10.00m - 2.00m,
>= 3000 and <= 5000 => 10.00m,
> 5000 => 10.00m + 5.00m,
}
not null => throw new ArgumentException($"Not a known vehicle type: {vehicle}", nameof(vehicle)),
null => throw new ArgumentNullException(nameof(vehicle))
另外,not 关键字还可以用来替代 if 条件判断中的逻辑非(!),比如:
// 原来的写法
if (!(e is Customer)) { ... }
// 新的写法(易读性更好)
if (e is not Customer) { ... }
C# 9.0 还有很多其它好用的新特性,下一篇文章继续与你分享。文章写短一点不是因为我偷懒哈,而是为了促使大家一次性看完,方便大家在零碎时间阅读,避免因文章太长而成为“收藏不看”系列。
参考:
https://bit.ly/2MNc0DJ
https://bit.ly/2UzEIwu
到此这篇关于C# 9.0 新特性之模式匹配简化的实现的文章就介绍到这了,更多相关C# 9.0 模式匹配 内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!
作者:王亮
出处:http://cnblogs.com/willick
联系:liam.wang@live.com










