Boolean ( bool
) не может быть нулевым. И:
bool foo; if(foo){} // Use of unassigned local variable 'foo'
Почему значение по умолчанию не ложно? Так каково же значение, если оно не равно нулю? Какова причина?
Редактировать 1 - значение по умолчанию действительно ложно, но все переменные должны быть инициализированы, почему? это уже для другого вопроса;)
Изменить 2 - с помощью Resharper: private bool foo = false; // Initializing field by default value is redundant
???
Ответы:
http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx
С участием
bool foo = new bool();
foo будет иметь значение по умолчанию.
Логическое значение по умолчанию - false
источник
Обычно локальные переменные не инициализируются автоматически. Следовательно, их использование без инициализации приведет к исключению.
Только следующие переменные автоматически инициализируются значениями по умолчанию:
Значения по умолчанию следующие (назначаются в конструкторе класса по умолчанию):
Что касается более поздних частей вашего вопроса:
источник
Значение по умолчанию действительно ложно.
Однако вы не можете использовать локальную переменную, если она не была назначена первой.
Вы можете использовать ключевое слово по умолчанию для проверки:
bool foo = default(bool); if (!foo) { Console.WriteLine("Default is false"); }
источник
Значение по умолчанию для bool -
false
. См. Эту таблицу для получения подробной информации о значениях по умолчанию. Единственная причина, по которой он не будет ложным при проверке, - это если вы инициализируете / установите его в значение true.источник
Попробуйте это (используя ключевое слово по умолчанию)
bool foo = default(bool); if (foo) { }
источник
Это можно рассматривать как подход к защитному программированию со стороны компилятора - переменные должны быть присвоены, прежде чем его можно будет использовать.
источник