コードインスペクション:パターンは冗長で、実行時のチェックは行われません。
C# or/and/not パターンは、入力値を繰り返さずにコンパクトな値チェックを生成できます (value == 1 || value == 2 と value is 1 or 2 を比較してください)。 ただし、複数のパターンが一緒に使用されると、式を読んだときにそれらの優先順位が明確でなくなり、見つけにくいバグが発生する可能性があります。
次の式を検討してください: value is not 0 or -1
ユーザーが value が 0 または 1 の両方と等しくないことを確認する場合、 is not は or より優先度が高いため、このチェックは value == -1 のときに true に評価されます。 意図したチェックのパターンを修正するには、括弧を追加して優先順位を変更する必要があります: 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);
}
}
2026 年 6 月 12 日