在单个变量上使用多个逻辑运算符而不重复变量名称的条件

Kub*_*a K 5 c#

看下面的if声明:

var veryLongVariableName = 7;
if (veryLongVariableName > 5 && veryLongVariableName < 18 && veryLongVariableName != 13)
{
    //do something...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法以更简单的方式编写这个,这样变量名就不会在表达式内重复3次if?我正在寻找一种也适用于其他值类型/引用类型的解决方案。

Joh*_*lay 13

如果您使用的是 C#9,则可以使用and

var veryLongVariableName = 7;
if (veryLongVariableName is > 5 and < 18 and not 13)
{
    //do something...
}
Run Code Online (Sandbox Code Playgroud)

由于您要检查常量值,因此您可以创建一个逻辑模式is,其后使用and,ornot

这也使用关系模式(使用<>和运算<=>=);另一个 C#9 模式匹配增强功能。