C#中的 bool ( System.Boolean 类型的别名)类型是能赋值为 true 和 false 字面量的逻辑值。
尽管布尔类型的值仅需要1位的存储空间,但是运行时却使用了1字节内存空间。这是因为字节是运行时和处理器能够有效使用的最小单位。为避免在使用数组时的空间浪费,.NET在 System.Collections 命令空间下提供了 BitArray 类,其中每一个布尔值仅占用一位。
bool 类型不能转换为数值类型,反之亦然。
== 和 != 用于判断任意类型的相等与不等,并总是返回一个 bool 值 。值类型通常有很简单的相等定义:
对于引用类型,默认情况下相等是基于引用的,而不是基于底层对象的实际值(更多内容请参见第6章):
相等和比较运算符 == 、 != 、 < 、 > 、 >= 和 <= 可用于所有的数值类型,但是用于实数时要特别注意(请参见2.4.9节)。比较运算符也可以用于枚举(enum)类型的成员,它比较的是表示枚举成员的整数值,我们将在3.7节中介绍。
我们将在4.17节、6.13节和6.14节中详细介绍相等和比较运算符。
&& 和 || 运算符用于判断“与”和“或”条件。它们常常与代表“非”的 ! 运算符一起使用。在下面的例子中, UseUmbrella 方法在下雨或阳光充足(雨伞可以保护我们不会经受日晒雨淋),以及无风(因为雨伞在有风的时候不起作用)的时候返回 true :
&& 和 || 运算符会在可能的情况下执行短路计算。在上面的例子中,如果刮风, (rainy || sunny) 将不会计算。短路计算在某些表达式中是非常必要的,它可以允许如下表达式运行而不会抛出 NullReferenceException 异常:
&和|运算符也可用于判断“与”和“或”条件:
不同之处是&和|运算符不支持短路计算。因此,它们很少用于替代条件运算符。
与C和C++中的&和|运算符不同,C#的&和|运算符在用于布尔表达式时执行布尔比较(非短路计算),仅在作用于数值时才执行位运算。
三元条件运算符(由于它是唯一一个使用三个操作数的运算符,因此也简称为三元运算符)使用 q ? a : b 的形式。因此,它在 q 为真时计算 a ,否则计算 b :
条件运算符在语言集成查询(Language-Integrated Query,LINQ)语句中的用处很大(参见第8章)。