如何在C#中指示可空值的原始数据类型

时间:2015-07-02 04:06:16

标签: c#

是否有像bool.null这样的东西来表示这是C#中的布尔类型的空值?

由于

4 个答案:

答案 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.Booleanstruct而不是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