Почему неназначенные локальные переменные не инициализируются автоматически?

Похоже, что нет возможности иметь неназначенные локальные переменные в вашем коде или проверять их, поскольку компилятор выдает ошибку Использование неназначенной локальной переменной .

Почему компилятор не использует default (T) для этих переменных во время компиляции?

Даже если это сложнее сделать для типов значений, ссылочные типы могут быть легко инициализированы значением null в данном случае, верно?

Вот какой-то тестовый код:

public void Test ( )
{
    int x;
    string s;

    if ( x == 5 )
        Console.WriteLine ( 5 );

    if ( s != null )
        Console.WriteLine ( "s" );
}

, который возвращает:

Use of unassigned local variable 'x'
Use of unassigned local variable 's'

ОБНОВЛЕНИЕ:

Для людей, которые заявляют, что это запрещено по уважительной причине, почему это разрешено на уровень класса?

public class C
{
    public int X;
    public string S;

    public void Print ( )
    {
        Console.WriteLine ( X );
        Console.WriteLine ( S );
    }
}

Этот код компилируется отлично.

Почему хорошо иметь на уровне класса, но не на уровне метода?

10
задан Joan Venge 17 October 2011 в 18:00
поделиться