在C#中讨论布尔变量的最小值和最大值有意义吗



讨论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

因此:

  1. bool值的非空集合的最小值为false(如果有(为false,否则为true
  2. 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);

最新更新