Похоже, Мэттью процитировал то же самое из вопроса о 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'
Кто-нибудь может объяснить, почему это происходит?