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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta