тайп чек на статик класс, а отрицание уже не проверить?
не компилируется
если убрать второй иф то скомпилится
if (!(x is Math))
судя по ошибке компилятор думает что ему нужна переменная проверяемого типа. error CS0723: Cannot declare a variable of static type 'Math' как вариант логика проверок в компиляторе одинаково проверяет сценарии: "x is not Math" и "x is not Math yOfMatch" https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA+ABATARgLABQhGKABACowDOALgDzkB8AFOaQgJSEDehp/pPgICWAM1LMEpYVVIA7CDVIBBUjS4EBpbloFDdpDDgCczLBwDc+0gF9SMADZUYvTVoBuAQyilZAXjUAOgBlKzd+G2tCSKICDABmQywVbWsEwxwABlJg0jCbIA= если реально хочется разобраться что там на самом деле происходит то вперед https://github.com/dotnet/roslyn
не одинаково, x is not y это сахар для !(x is y), а x is y z юзает создает уже переменную и as юзает
Обсуждают сегодня