讨论C#中布尔值的最小值和最大值有意义吗
false < true
范围的最小是false,并且范围的最大是否是true?
我之所以特别提到C#,是因为有些人提到了C/C++上下文,其中true/false映射为整数。
对我来说,谈论布尔值的最小值和最大值毫无意义。
在C#中讨论布尔值的最小值和最大值有意义吗
是的,这很有道理。虽然C#不允许使用关系运算符(如<
和>
(直接比较bool
值,但System.Boolean类型实现了IComparable接口,因此可以使用CompareTo方法比较bool
值。该方法认为false
小于true
:
// Is false less than true?
Console.WriteLine(false.CompareTo(true) < 0); // True
// Is true less than or equal to false?
Console.WriteLine(true.CompareTo(false) <= 0); // False
// Is true greater than or equal to true?
Console.WriteLine(true.CompareTo(true) >= 0); // True
因此:
bool
值的非空集合的最小值为false
(如果有(为false
,否则为true
bool
值的非空集合的最大值为true
(如果有(为true
,否则为false
这可以通过使用LINQ最小和最大扩展来证明方法:
using System.Linq;
Console.WriteLine(new[] { false, false }.Max()); // False
Console.WriteLine(new[] { false, true }.Min()); // False
Console.WriteLine(new[] { false, true }.Max()); // True
Console.WriteLine(new[] { true, true }.Min()); // True
不,在C#中讨论布尔值的最小值和最大值是没有意义的。
您将低于
Compilation error (line 9, col 12): Operator '<' cannot be applied to operands of type 'bool' and 'bool'
在此处查找有关布尔类型的完整详细信息
但在C#中,如果将false转换为int,则它为0,true为1,但它没有引用任何最小和最大范围。它只是表示1总是大于0。
var r = Convert.ToInt32(false) < Convert.ToInt32(true);
Console.Write(r);