问题描述
#
在测试范围时,是否有更多的 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" };