Похоже, Мэттью процитировал то же самое из вопроса о github, но я лично не смог понять это с самого начала.

ющее работает как ожидалось:

dynamic foo = GetFoo();

if (foo != null)
{
    if (foo is Foo i)
    {
        Console.WriteLine(i.Bar);
    }
}

но если я объединю операторы if так:

if (foo != null && foo is Foo i)
{
    Console.WriteLine(i.Bar);
}

тогда я получаю предупреждение компилятора

Use of unassigned local variable 'i'

Кто-нибудь может объяснить, почему это происходит?

Ответы на вопрос(2)

Ваш ответ на вопрос