C#中的默认布尔值是什么?
布尔值(C#中的默认布尔值是什么?,c#,C#,布尔值(bool)不能为空。以及: bool foo; if(foo){} // Use of unassigned local variable 'foo' 为什么默认值不是false?那么,如果该值不为null,那么该值是多少? 原因是什么 编辑1-默认值确实为false-但是所有变量都应该初始化,为什么?这是另一个问题;) 编辑2-使用Resharper:private bool foo=false;//初始化字段默认值是冗余的? 请记住,不允许在C#中使用未初始化的变量 与 foo将具
bool
)不能为空。以及:
bool foo; if(foo){} // Use of unassigned local variable 'foo'
为什么默认值不是false?那么,如果该值不为null,那么该值是多少?
原因是什么
编辑1-默认值确实为false-但是所有变量都应该初始化,为什么?这是另一个问题;)
编辑2-使用Resharper:private bool foo=false;//初始化字段默认值是冗余的
?
请记住,不允许在C#中使用未初始化的变量
与
foo将具有默认值
布尔值默认值为false布尔值的默认值为
false
。有关默认值的详细参考,请参阅。当您检查它时,它不会为false的唯一原因是如果您将其初始化/设置为true。默认值确实为false
但是,您不能使用局部变量,因为它没有首先赋值
您可以使用默认关键字来验证:
bool foo = default(bool);
if (!foo) { Console.WriteLine("Default is false"); }
试试这个(使用默认关键字)
它可以被视为来自编译器的防御编程方法-必须先分配变量,然后才能使用。基本上,局部变量不会自动初始化。因此,在不初始化的情况下使用它们将导致异常 只有以下变量会自动初始化为其默认值:
- 静态变量
- 类和结构实例的实例变量
- 数组元素
- 引用类型变量的默认值为null
- 对于整数类型,默认值为0
- 对于char,默认值为“\u0000”
- 对于float,默认值为0.0f
- 对于double,默认值为0.0d
- 对于十进制,默认值为0.0m
- 对于bool,默认值为false
- 对于枚举类型,默认值为0
- 对于结构类型,默认值是通过将所有值类型字段设置为其默认值获得的
- 所有未自动初始化为默认值的变量都应初始化的原因是编译器施加的限制
- private bool foo=false;这确实是多余的,因为这是一个类的实例变量。因此,这将在默认构造函数中初始化为false。因此,没有必要将此设置为“虚假自己”
bool foo = default(bool);
if (!foo) { Console.WriteLine("Default is false"); }
bool foo = default(bool); if (foo) { }