Разница между нулевым и неинициализированным?

Когда я пишу следующий код на C #:

SqlCeCommand command;
try
{
    // The command used to affect the data
    command = new SqlCeCommand
                  { 
                     // init code removed for brevity
                  };

    // Do stuff 
    // Do more stuff
}
finally
{
    if (command != null)
        command.Dispose();
}

Resharper жалуется на мою проверку команды! = Null. В нем говорится, что команда не может быть назначена (потому что она может каким-то образом выйти из строя при построении и по-прежнему попасть в блок try).

Поэтому я изменяю объявление команды на SqlCeCommand command = null; и все довольны.

Но мне остается только гадать, в чем разница?

И почему по умолчанию не устанавливается значение null? Значение: Чем полезен C #, если локальные переменные по умолчанию не равны нулю?

9
задан Nick 17 October 2015 в 07:09
поделиться