代码检查:该模式是多余的,不会产生任何运行时检查。
C# 或/与/非模式可以用于生成紧凑的值检查,而无需重复输入值(比较 value == 1 || value == 2 和 value 是 1 或 2)。 然而,当多个模式一起使用时,阅读表达式时其优先级并不那么清晰,这可能会引入难以发现的错误。
请考虑以下表达式: value 不是 0 或 -1。
如果用户打算检查 值 是否不等于 0 或 1 ,这种检查在 value == -1 时将评估为 true ,因为 不是 的优先级高于 或者。 要修正用于预期检查的模式,我们需要添加括号以更改优先级: value 不是 0 或 -1。
JetBrains Rider 报告了此类模式,但不会建议任何快速修复,因为根据用户意图,该模式可以通过不同方式进行修正。
void Sample(int value)
{
if (value is not 0 or -1)
{
Console.WriteLine(value);
}
}
void Sample(int value)
{
if (value is not (0 or -1))
{
Console.WriteLine(value);
}
}
最后修改日期: 2025年 9月 26日