我在别人的代码中遇到了以下表达式。我认为这是一个糟糕的代码,原因有很多(尤其是因为它没有考虑到 bool.TrueString 和 bool.FalseString),但我很好奇编译器将如何评估它。
private bool GetBoolValue(string value)
{
return value != null ? value.ToUpper() == "ON" ? true : false : false;
}
编辑 顺便说一句,表达式不是从内向外评估的吗?在这种情况下,在调用 value.ToUpper() 之后检查 value != null 的意义何在,这将引发空引用异常?
我认为以下是正确的(故意)冗长的版本(我永远不会这样 :D ):
if (value != null)
{
if (value.ToUpper() == "ON")
{
return true;
}
else // this else is actually pointless
{
return false;
}
}
else
{
return false;
}
可以缩短为:
return value != null && value.ToUpper == "ON";
这是对表达式的正确重写吗?