Следующее работает, как ожидалось:
dynamic foo = GetFoo();
if (foo != null)
{
if (foo is Foo i)
{
Console.WriteLine(i.Bar);
}
}
но если я скомбинирую так:
if (foo != null && foo is Foo i)
{
Console.WriteLine(i.Bar);
}
то я получаю предупреждение компилятора
Use of unassigned local variable 'i'
Может ли кто-нибудь объяснить, почему это происходит?