Error que combina declaraciones 'if' que comprueban nulamente y coincidencias de patrones
Los siguientes funcionan como se esperaba:
dynamic foo = GetFoo();
if (foo != null)
{
if (foo is Foo i)
{
Console.WriteLine(i.Bar);
}
}
pero si combino las declaraciones if de esta manera:
if (foo != null && foo is Foo i)
{
Console.WriteLine(i.Bar);
}
Entonces recibo una advertencia del compilador
Use of unassigned local variable 'i'
¿Alguien puede explicar por qué sucede esto?