在测试范围时,是否有更多的 C# 9 / .NET 5 惯用方式来表达 If/Else? 模式匹配或更新的 C# 功能

问题描述

今天不得不为一个非常接近此的项目编写一些代码

#

在测试范围时,是否有更多的 C# 9 / .NET 5 惯用方式来表达 If/Else? Resharper 已经告诉我缩短/删除一些 else 语句。 是否有更像人类可读版本的“网格”?表达相同意图的更好方法,但让它读起来像 6 个简单的条件。谢谢。

解决方法

在 .NET 5 中,您应该能够像在这个例子中那样使用模式匹配:

static string CreateColorFromPercentage(double percentage,bool isPrimaryGroup) {
    return (percentage,isPrimaryGroup) switch {
        (>= 97.0,true)  => "#000000",(> 80.0,true)  => "#FF0000",(_,true)  => "#FFA500",(>= 97.5,false) => "#000000",false) => "#FFA500",false) => "#008000"
    };
}
,

您可以使用嵌套的 switch expressions

SizeInput

不会说这更“惯用”,但它可以更具可读性。

,

模式匹配和条件运算符确实可以使该页面的长代码段更具可读性:

private static string CreateColorFromPercentage(double percentage,bool isPrimaryGroup) => isPrimaryGroup 
    ? percentage switch { >= 97.0 => "#000000",> 80.0 => "#FF0000",_ => "##FFA500" }
    : percentage switch { >= 97.5 => "#000000",> 80.0 => "#FFA500",_ => "##008000" };