如何在 C# 中将 Cast null 键入为 Bool?

Posted

技术标签:

【中文标题】如何在 C# 中将 Cast null 键入为 Bool?【英文标题】:How to Type Cast null as Bool in C#? 【发布时间】:2016-04-07 17:22:34 【问题描述】:

我有一个可以为空的布尔 (bool?) 变量,它的值为 null。还有一个纯bool 类型的变量,我尝试将可以为空的布尔值转换为布尔值。但我遇到了一个错误“Nullable object must have a value.

我的 C# 代码是

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

【问题讨论】:

您的值是 null...它没有要转换为的 bool 值 - 如果您希望在 x 为空时分配类型的默认值,使用GetValueOrDefault() 方法。 【参考方案1】:

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

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

【讨论】:

【参考方案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

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

希望对你有帮助

【讨论】:

【参考方案3】:

x.HasValue == false 的情况下,使用x.GetValueOrDefault() 将默认值(false 用于System.Boolean)分配给y

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

bool y = x ?? false;

【讨论】:

我主要使用替代方案.. :)

以上是关于如何在 C# 中将 Cast null 键入为 Bool?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将“=?utf-8?B?...?=”解码为字符串

如何在 C# 中将字符串转换为 HTTP 响应?

如何在硒 c# 中将 Blob 图像转换为位图图像

如何在 C# EF 核心 web api 中将列表转换为 Json

在构造函数中将类对象强制转换为接口始终返回NULL [duplicate]

C# Combobox (Dropdownstyle = Simple) -- 如何在键入时选择项目