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?

questionAnswers(2)

yourAnswerToTheQuestion