Comportamento estranho do switch case com valor booleano

Minha pergunta não é sobre como resolver esse erro (eu já resolvi isso), mas porque é esse erro com valor booleano.

Minha função é

private string NumberToString(int number, bool flag)
{
    string str;

    switch(flag)
    {
        case true: 
            str = number.ToString("00");
            break;
        case false:
            str = number.ToString("0000"); 
            break;
    }

    return str;
}

Erro éUse of unassigned local variable 'str'. Bool só pode ser verdadeiro ou falso. Então vai preencherstr em ambos os casos. Então, por que esse erro?

Além disso, esse erro se foi se junto com o caso verdadeiro e falso eu adiciono umdefault caso, mas o que pode um bool separar do verdadeiro e do falso?

Por que esse comportamento estranho com variável bool?

questionAnswers(5)

yourAnswerToTheQuestion