VB.NET将True / False视为整数

时间:2011-01-21 13:39:47

标签: vb.net compiler-construction boolean

为什么两个IntelliSense和编译器都接受VB.NET中的If 3 = True Then ...?即使Option Strict开启。

它实际上是否将布尔人视为整数,或者是什么交易?

4 个答案:

答案 0 :(得分:3)

来自MSDN,Boolean Data Type (Visual Basic)

  

当Visual Basic将数值数据类型值转换为布尔值时,0变为False,所有其他值变为True。

因此,除了0之外,任何转换为​​布尔值的数字都会计算为True

答案 1 :(得分:2)

True等同于任何非零值。您应该收到与

相同的回复
If -3 = True Then

答案 2 :(得分:1)

任何非零整数值=布尔值True。

可以在布尔表达式中使用整数值的比较。

答案 3 :(得分:0)

  

@Oded“L - 猜测,这可能是因为VB6 / VBA就是这样做的,并让开发人员习惯了这些语言在他们的快乐区。 - Oded 2天前”

实际上,我对这种情况的理解是Visual Basic 6.0和VBA在处理布尔值时与其他编程社区不一致,因为对于这两种语言,-1 = true。向“0 = true以外的任何值”的移动是为了向后兼容。

我相信对于世界上大多数人来说,重要的运算符是0 = false。除0以外的任何值都将解析为true。

虽然在很多情况下,我认为标准是0 =假,1 =真。当Microsoft开发VB.NET时,他们需要保持对Visual Basic 6.0 / VBA的-1 = true保持的向后兼容性。因此,他们选择了True =<>这样,1或-1将解析为true。这似乎比一个更复杂的条件语句更清晰,它涵盖了1或-1的两种情况。他们所获得的基本上是直接评估,检查除0以外的任何值。

如果你考虑一下,这似乎也与基本的二元概念一致。开关打开(某些值不是0)或关闭(值为零)。