如何在 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# EF 核心 web api 中将列表转换为 Json