Каков порядок приоритета сопоставления с образцом «нет»? Я понял, что написал такой код:
if (x is not TypeA or TypeB)
И неявно предполагал, что я пишу:
if (!(x is TypeA) && !(x is TypeB))
Но я только что понял, что это может оцениваться как:
if ((!x is TypeA) || (x is TypeB))
Другими словами, применяется ли «нет» к «или разделенному» списку или оно применяется только к следующему аргументу в списке. Нужно ли мое первоначальное утверждение писать так:
if (x is not TypeA and not TypeB)