JetBrains Rider 2025.1 Help

代码检查:该模式是多余的,不会产生任何运行时检查。

C# 或/与/非模式可以用于生成紧凑的值检查,而无需重复输入值(比较 value == 1 || value == 2value is 1 or 2)。 然而,当多个模式一起使用时,阅读表达式时其优先级并不那么清晰,这可能会引入难以发现的错误。

请考虑以下表达式: value is not 0 or -1

如果用户打算检查 是否不等于 01 ,这种检查在 value == -1 时将评估为 true ,因为 is not 的优先级高于 或者。 要修正用于预期检查的模式,我们需要添加括号以更改优先级: value is not (0 or -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年 6月 24日