我在以下内容中得到一个构建错误:
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检查。