bool?
实际上是 Nullable<Boolean>
类型,可以当作三值的 bool
类型来使用。不过三值的布尔进行与或运算时的结果与二值有什么不同吗?
重载条件逻辑运算符“与”(&&)“或”(||)
在 C# 重载条件逻辑运算符(&& 和 ||) 一文中我说明了如何重载条件逻辑运算符 &&
和 ||
。
这两个运算符不能直接重载,但可以通过重载 &
和 |
运算符来间接完成。
对于 bool?
,重载了这样两个运算符:
bool? operator &(bool? x, bool? y)
bool? operator |(bool? x, bool? y)
于是我们可以得到三值 bool?
的与或结果。
三值 bool? 的与或结果
x | y | x&y | x|y |
---|---|---|---|
true |
true |
true |
true |
true |
false |
false |
true |
true |
null |
null |
true |
false |
true |
false |
true |
false |
false |
false |
false |
false |
null |
false |
null |
null |
true |
null |
true |
null |
false |
false |
null |
null |
null |
null |
null |
参考资料
我的博客会首发于 https://walterlv.com/,而 CSDN 和博客园仅从其中摘选发布,而且一旦发布了就不再更新。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://blog.csdn.net/wpwalter),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。