c#中默认的布尔值是什么?
本文关键字:是什么 布尔值 默认 | 更新日期: 2023-09-27 18:03:52
布尔值(bool
)不能为空。和:
bool foo; if(foo){} // Use of unassigned local variable 'foo'
为什么默认值不是false?如果它不为空,它的值是多少?原因是什么?
编辑1 -默认值确实是false -但是所有变量都应该初始化,为什么?这是另一个问题;)
编辑2 -与Resharper: private bool foo = false; // Initializing field by default value is redundant
??
http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx
请记住,在c#中不允许使用未初始化的变量。
bool foo = new bool();
foo将使用默认值。
布尔默认是假
基本上,局部变量不会自动初始化。因此,使用它们而不初始化将导致异常。
只有以下变量被自动初始化为默认值:
- 类和结构实例的实例变量
- 数组元素
默认值如下(在类的默认构造函数中分配):
- 引用类型的变量默认值为null。
- 对于整数类型,默认值为0
- 对于char,默认值是' 'u0000'
- 对于float,默认值为0.0f
- 对于double,默认值为0.0d
- 对于十进制,默认值为0.0m
- 对于bool,默认值为false
- 枚举类型默认为0
- 对于结构类型,通过将所有值类型字段设置为其默认值来获得默认值
关于你问题后面的部分:
- 所有没有自动初始化为默认值的变量都应该初始化的原因是编译器施加的限制。
- private bool foo = false;这确实是多余的,因为这是一个类的实例变量。因此,这将在默认构造函数中初始化为false。因此不需要自己将其设置为false。
默认为false。
但是,如果没有先赋值,则不能使用局部变量
可以使用默认关键字进行验证:
bool foo = default(bool);
if (!foo) { Console.WriteLine("Default is false"); }
bool值默认为false
。有关默认值的重要参考,请参见该表。当您检查它时,它不会为false的唯一原因是如果您将其初始化/设置为true。
试试这个
bool foo = default(bool); if (foo) { }
从编译器的角度来看,它可以被视为一种防御性的编程方法——在使用它之前必须对变量进行赋值。