Un booleano ( bool
) no puede ser nulo. Y:
bool foo; if(foo){} // Use of unassigned local variable 'foo'
¿Por qué el valor predeterminado no es falso? Entonces, ¿cuál es el valor si no es nulo? ¿Cuál es la razón?
Edición 1: el valor predeterminado es falso, pero todas las variables deben inicializarse, ¿por qué? esto es para otra pregunta;)
Edición 2 - con Resharper: private bool foo = false; // Initializing field by default value is redundant
???
Respuestas:
http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx
Con
bool foo = new bool();
foo tendrá el valor predeterminado.
El valor booleano predeterminado es falso
fuente
Básicamente, las variables locales no se inicializan automáticamente. Por lo tanto, usarlos sin inicializar resultaría en una excepción.
Solo las siguientes variables se inicializan automáticamente a sus valores predeterminados:
Los valores predeterminados son los siguientes (asignados en el constructor predeterminado de una clase):
En lo que respecta a las partes posteriores de su pregunta:
fuente
El valor predeterminado es de hecho falso.
Sin embargo, no puede usar una variable local si no se asignó primero.
Puede utilizar la palabra clave predeterminada para verificar:
bool foo = default(bool); if (!foo) { Console.WriteLine("Default is false"); }
fuente
El valor predeterminado de bool es
false
. Consulte esta tabla para obtener una excelente referencia sobre los valores predeterminados. La única razón por la que no sería falso cuando lo verifique es si lo inicializa / establece en verdadero.fuente
Pruebe esto (usando la palabra clave predeterminada)
bool foo = default(bool); if (foo) { }
fuente
Puede tratarse como un enfoque de programación defensiva del compilador: las variables deben asignarse antes de que se pueda usar.
fuente