如何在 C# 中将 null 类型转换为布尔?

How to Type Cast null as Bool in C#?

提问人:B.Balamanigandan 提问时间:1/4/2016 更新时间:1/6/2022 访问量:26915

问:

我有一个可为 null 的 bool () 变量,它包含一个值 null。另一个纯类型的变量,我试图将可为空的布尔转换为布尔。但是我遇到了一个错误“Nullable 对象必须有一个值。bool?bool"

我的 C# 代码是

bool? x = (bool?) null;
bool y = (bool)x;
C# 强制转换 布尔 值可为 null

评论

2赞 Preston Guillot 1/4/2016
你的价值是......它没有要强制转换为的值 - 如果要分配类型的默认值为 null,请使用该方法。nullboolxGetValueOrDefault()

答:

40赞 Kirill Shlenskiy 1/4/2016 #1

用于在以下情况下将默认值 ( for ) 分配给 。x.GetValueOrDefault()falseSystem.Booleanyx.HasValue == false

或者,您可以使用空合并运算符 (??),如下所示:

bool y = x ?? false;

评论

0赞 Ken Kin 3/9/2019
我主要使用替代方法..:)
-1赞 Mangukiya Hardik 1/4/2016 #2

如果我有一个属性布尔值

If (HasData.HasValue) Then
            Dim value As Boolean = HasData.Value
        End If
        ' or you can also do this
        If (HasData IsNot Nothing) Then

    End If

这应该可以解决您的错误。

希望这会有所帮助

0赞 pasx 1/6/2022 #3

使用布尔常量检查是否相等是一个方便的快捷方式:

        var x = (bool?) null;
        var y = x == true;