为什么不bool?支持解除&&和||?他们本可以提升true和false操作员,这些操作员会间接地增加&&和提升||.
运营商|和&已取消和落实正确的三值逻辑.但当然,他们并没有像||和那样短路&&.
问题是为什么他们在创建规范时决定不提升这些操作符.所以"就像这样,因为规范说的如此"对"为什么?"没有答案.
当抬起true并false让null既不是true也不是false:
public static bool operator true(bool? x)
{
return x.HasValue && x.Value
}
public static bool operator false(bool? x)
{
return x.HasValue && !x.Value
}
Run Code Online (Sandbox Code Playgroud)
这将产生&&和||表现就像他们的非短路对应物.不同之处在于false && anything和true || anything将短路(false和true在这两个例子中没有编译时间常数).
这与 …