Erro ao combinar instruções 'if' que verifica nulamente e corresponde a padrões
O seguinte funciona como esperado:
dynamic foo = GetFoo();
if (foo != null)
{
if (foo is Foo i)
{
Console.WriteLine(i.Bar);
}
}
mas se eu combinar as instruções if da seguinte forma:
if (foo != null && foo is Foo i)
{
Console.WriteLine(i.Bar);
}
então eu recebo um aviso do compilador
Use of unassigned local variable 'i'
Alguém pode explicar por que isso acontece?