¿Por qué tengo que asignar un valor a un int en C # cuando el valor predeterminado es 0?

Esto funciona:

class MyClass
{
    int a;

    public MyClass()
    {
        int b = a;
    }
}

Pero esto da un error de compilación ("Uso de la variable local no asignada 'a'"):

class MyClass
{
    public MyClass()
    {
        int a;
        int b = a;
    }
}

Por lo que sé, esto sucede porque en el primer ejemplo, técnicamente, el compilador no sabe que 'a' no está asignado. En el último ejemplo, 'a' se define localmente y, por lo tanto, es fácil de rastrear.

Pero, ¿por qué el último ejemplo no funciona?

¿Los enteros no son predeterminados a 0? ¿Es esto algo que el compilador aplica para las "mejores prácticas"? ¿O hay otra razón?

Respuestas a la pregunta(5)

Su respuesta a la pregunta