布尔值(bool
)不能为空。和
bool foo; if(foo){} // Use of unassigned local variable 'foo'
为什么默认值不是假的?那么如果它不是null,它的值是多少? 是什么原因?
编辑1 - 默认值确实为false - 但是应该初始化所有变量,为什么?这是另一个问题;)
编辑2 - 使用Resharper:private bool foo = false; // Initializing field by default value is redundant
???
答案 0 :(得分:76)
http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx
请记住,不允许在C#中使用未初始化的变量。
用
bool foo = new bool();
foo将具有默认值。
布尔默认值为 false
答案 1 :(得分:22)
基本上,局部变量不会自动初始化。因此,在没有初始化的情况下使用它们会导致异常。
只有以下变量会自动初始化为默认值:
默认值如下(在类的默认构造函数中指定):
至于你问题的后面部分是如何:
答案 2 :(得分:9)
默认值确实为false。
但是你不能使用局部变量,因为它没有先被分配。
您可以使用default关键字进行验证:
bool foo = default(bool);
if (!foo) { Console.WriteLine("Default is false"); }
答案 3 :(得分:4)
bool的默认值为false
。有关默认值的详细参考,请参阅this table。检查它的唯一原因就是它初始化/设置为真。
答案 4 :(得分:0)
试试这个(使用默认关键字)
bool foo = default(bool); if (foo) { }
答案 5 :(得分:0)
它可以被视为编译器的防御性编程方法 - 必须先分配变量才能使用它。