我有一段代码示例:
bool _HasParsed;
object IsCheckedAsObj = GetCheckedStatus();
if (IsCheckedAsObj == null)
{
throw new InvalidOperationException("Status not found");
}
_HasParsed = (bool?)IsCheckedAsObj; //why (bool?) instead of (bool)
Run Code Online (Sandbox Code Playgroud)
在最后一行中,我可以理解他们正在将对象解析为boolean.那是什么'?' 在那里?(bool?)而不是(bool)之间的区别是什么?
类型bool?是简写Nullable<bool>.
代码不能按原样编译.您将收到错误消息"无法隐式转换类型'bool?' 'bool'."
如果您将变量声明为可为空,那么它将起作用:
bool? _HasParsed;
Run Code Online (Sandbox Code Playgroud)
这当然意味着您需要在代码中进行其他更改.您可以使用_HasParsed.HasValue检查变量是否为null,并用于_HasParsed.Value获取bool值.