C#8.0模式匹配

链接:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/pattern-matching

运行环境:.NET Core3.1

模式匹配是官方的新版switch

改变:

1.使用时变量后面加switch关键字

2.省略case关键字,同时结果变成表达式

3.可以传入为空的参数,也就是说可以匹配为空的参数,同时可以检测出何时传入了为空的参数

4.传入非匹配类型时优先执行{ }=>这个方法

5.支持多个参数匹配

官方案例:

public decimal PeakTimePremium(DateTime timeOfToll, bool inbound) =>
    (IsWeekDay(timeOfToll), GetTimeBand(timeOfToll), inbound) switch
    {
        (true, TimeBand.MorningRush, true)  => 2.00m,
        (true, TimeBand.MorningRush, false) => 1.00m,
        (true, TimeBand.Daytime,     _)     => 1.50m,
        (true, TimeBand.EveningRush, true)  => 1.00m,
        (true, TimeBand.EveningRush, false) => 2.00m,
        (true, TimeBand.Overnight,   _)     => 0.75m,
        (false, _,                   _)     => 1.00m,
    };

 

posted @ 2022-06-24 09:40  过往云烟吧  阅读(117)  评论(0)    收藏  举报