Bud*_*Joe 0 c# idioms readability pattern-matching .net-5
今天只需要为一个非常接近此的项目编写一些代码:
private static string CreateColorFromPercentage(double percentage, bool isPrimaryGroup)
{
if (isPrimaryGroup)
{
if (percentage >= 97.0)
{
return "#000000"; // black
}
else if (percentage > 80.0)
{
return "#FF0000"; // red
}
else
{
return "#FFA500"; // orange
}
}
else
{
if (percentage > 97.5)
{
return "#000000"; // black
}
else if (percentage > 80.0)
{
return "#FFA500"; // orange
}
else
{
return "#008000"; // green
}
}
}
Run Code Online (Sandbox Code Playgroud)
在测试范围时,是否有更多的 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",
(> 80.0, false) => "#FFA500",
(_, false) => "#008000"
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |