Перенос условия оператора «if» в локальную переменную вызывает недовольство компилятора C #

Объясните, пожалуйста, причину такой ситуации.

Сегодня я написал код (изменены только имена переменных):

private void Foo() 
{
    int firstInteger, secondInteger;
    const string firstStringValue = "1", secondStringValue = "2";

    if (!string.IsNullOrWhiteSpace(firstStringValue) && int.TryParse(firstStringValue, out firstInteger) &&
        !string.IsNullOrWhiteSpace(secondStringValue) && int.TryParse(secondStringValue, out secondInteger))
    {
        // Using firstInteger and secondInteger here
        firstInteger++;
        secondInteger++;
    }
}

Все было хорошо, пока я не решил переместить условие if в переменную:

private void Foo()
{
    int firstInteger, secondInteger;
    const string firstStringValue = "1", secondStringValue = "2";

    bool firstIntegerAndSecondIntegerAreSpecified = 
        !string.IsNullOrWhiteSpace(firstStringValue) && int.TryParse(firstStringValue, out firstInteger) &&
        !string.IsNullOrWhiteSpace(secondStringValue) && int.TryParse(secondStringValue, out secondInteger);

    if (firstIntegerAndSecondIntegerAreSpecified)
    {
        // Use firstInteger and secondInteger here
        firstInteger++;
        secondInteger++;
    }
}

Теперь компилятор подчеркивает переменные firstInteger и secondInteger с ошибкой " Локальная переменная может быть не инициализирована перед доступом ».

Но почему? Единственное, что я сделал, это немного переделал код. И, как мне кажется, логика та же.

7
задан Brandon 18 March 2011 в 21:55
поделиться