是否有像bool.null这样的东西来表示这是C#中的布尔类型的空值?
由于
答案 0 :(得分:3)
Boolean
是一种值类型。在任何情况下都不能等于null
。
但是,如果它是Nullable Boolean
,您可以直接将其与null进行比较:
bool? b = GetBooleanFromSomeWhere();
if (b == null)
// It is null
P.S。没有"布尔类型的空值"。
类没有"自己的空值"。只有null
。
答案 1 :(得分:3)
在C#中,null
值仅与引用类型相关。所有未初始化的引用类型的值都为null
。但是,值类型的值永远不会为null
。他们总是有一个合适的零'值为默认值,因此未初始化的bool
变量的值为false
。更多信息here。
但是,在C#2.0中,引入了Nullable
类型来包装值类型,其结构可以表示null
或实际值。所以你可以说bool?
相当于你建议的bool.null
。
长话短说,变量可以有一个类型,但是当赋值null
时,不能从值推断出类型。
答案 2 :(得分:1)
System.Boolean
是struct
而不是class
,这意味着它不能是null
。但是,您可以声明Nullable<Boolean>
或Boolean?
来模拟可以为空的值。
bool? myBool = null;
if (myBool.HasValue)
{
//my bool is not null
//access its value using myBool.Value
}
else
{
//my bool is null
}
如果您想了解更多可以忽略的类型,请查看以下链接:https://msdn.microsoft.com/pt-br/library/1t3y8s4s.aspx
答案 3 :(得分:1)
如果你想在你的代码上创建一个null null,只需将?
添加到数据类型的末尾,就像这样
int? a = null;
bool? b = null;
像这样:D