我有一个返回字符串的方法,但是变量的类型是可以为null的布尔值



我在以下内容中得到一个构建错误:

protected override string SHow()
{
    return _type ? "Y" : "N";
}

_type属于可为null的布尔类型。我得到"无法从?bool转换为bool。"

你能帮忙解决吗?

可为null的类型通过value属性提供对其基础值的访问。

return _type.HasValue && _type.Value ? "Y" : "N";

好,正在编辑以返回null。。。

const string trueValue = "True";
const string falseValue = "False";
return _type.HasValue ? (_type.Value ? trueValue : falseValue) : null;

使用

protected override string SHow() 
{
    if(_type ==null)
    {
        return "";
    }
     return _type.Value ? "Y" : "N";
 }

如果bool?有价值,那么它确实是对的还是错的。除了可以为null。当我们想要访问值时需要HasValue,而不是当我们比较值时。因此,以下内容也将起作用:

protected override string SHow()
{ 
    string result = null;
    if(_type==true)
        result = "Y"; // has value & value is true
    else if (_type==false)
        result="N"; // has value & value is false
    return result; // retuing null if no value
}

语句"_type==true"永远不会失败或给您带来编译错误,因为编译器不仅会检查null,还会检查true或false,并且只有当_type不是null并且值为true时才返回true。任何可为null的基元类型的相等性比较的行为与可为null相同。比较时不需要进行HasValue检查。

最新更新