多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# bool(C# 参考) **bool** 关键字是 [System.Boolean](https://msdn.microsoft.com/zh-CN/library/system.boolean.aspx) 的别名。它用于声明变量来存储布尔值 [true](https://msdn.microsoft.com/zh-CN/library/eahhcxk2.aspx) 和 [false](https://msdn.microsoft.com/zh-CN/library/67bxt5ee.aspx)。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 如果需要一个也可以有 **null** 值的布尔型变量,请使用 bool?。有关更多信息,请参见 [可以为 null 的类型(C# 编程指南)](https://msdn.microsoft.com/zh-CN/library/1t3y8s4s.aspx)。 | ## 文本 可将布尔值赋给 **bool** 变量。也可以将计算结果为 **bool** 类型的表达式赋给 **bool** 变量。 ``` public class BoolTest { static void Main() { bool b = true; // WriteLine automatically converts the value of b to text. Console.WriteLine(b); int days = DateTime.Now.DayOfYear; // Assign the result of a boolean expression to b. b = (days % 2 == 0); // Branch depending on whether b is true or false. if (b) { Console.WriteLine("days is an even number"); } else { Console.WriteLine("days is an odd number"); } } } /* Output: True days is an <even/odd> number */ ``` **bool** 变量的默认值为 **false**。 **bool?** 变量的默认值为 **null**。 ## 转换 在 C++ 中,**bool** 类型的值可转换为 **int** 类型的值;也就是说,**false** 等效于零值,而 **true** 等效于非零值。在 C# 中,不存在 **bool** 类型与其他类型之间的相互转换。例如,下面的 **if** 语句在 C# 中无效: ``` int x = 123; // if (x) // Error: "Cannot implicitly convert type 'int' to 'bool'" { Console.Write("The value of x is nonzero."); } ``` 若要测试 **int** 类型的变量,必须将该变量与一个值(例如零)进行显式比较,如下所示: ``` if (x != 0) // The C# way { Console.Write("The value of x is nonzero."); } ``` 在此例中,您从键盘输入一个字符,然后程序检查输入的字符是否是一个字母。如果字符是一个字母,则程序检查它是大写还是小写。这些检查是使用 [IsLetter](https://msdn.microsoft.com/zh-CN/library/yyxz6h5w.aspx) 和 [IsLower](https://msdn.microsoft.com/zh-CN/library/d1x97616.aspx)(两者均返回 **bool** 类型)来执行的: ``` public class BoolKeyTest { static void Main() { Console.Write("Enter a character: "); char c = (char)Console.Read(); if (Char.IsLetter(c)) { if (Char.IsLower(c)) { Console.WriteLine("The character is lowercase."); } else { Console.WriteLine("The character is uppercase."); } } else { Console.WriteLine("Not an alphabetic character."); } } } /* Sample Output: Enter a character: X The character is uppercase. Enter a character: x The character is lowercase. Enter a character: 2 The character is not an alphabetic character. */ ``` ## C# 语言规范 有关详细信息,请参阅 [C# 语言规范](https://msdn.microsoft.com/zh-CN/library/ms228593.aspx)。该语言规范是 C# 语法和用法的权威资料。 ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-CN/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [C# 关键字](https://msdn.microsoft.com/zh-CN/library/x53a06bb.aspx) [整型表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/exx3b86w.aspx) [内置类型表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/ya5y69ds.aspx) [隐式数值转换表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/y5b434w4.aspx) [显式数值转换表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/yht2cx7b.aspx)