怎么来都IntelliSense和编译器在VB.NET接受If 3 = True Then ...
?即使有Option Strict。VB.NET治疗真/假的整数
它实际上把布尔值作为整数,或者这是怎么回事?
怎么来都IntelliSense和编译器在VB.NET接受If 3 = True Then ...
?即使有Option Strict。VB.NET治疗真/假的整数
它实际上把布尔值作为整数,或者这是怎么回事?
任何非零整数值=布尔值为真。整数值的
比较可以在布尔表达式中被使用。
几乎正确。真是任何非零值。所以负值也等同于真实。 – 2011-01-21 13:47:56
真转换为Boolean计算到True
,除了被等同为任何非零值。您应该收到
If -3 = True Then
@Oded“L相同的响应 - 在猜测,这可能是因为VB6/VBA这样的行为,并保留使用这些语言的开发人员在他们的快乐地带 - 奥德3天前“
事实上,我所了解的情况是,Visual Basic 6.0和VBA是在与编程社区在其治疗布尔的休息机会,在对于这两种语言,-1 =真正。向“除0以外的任何值=真”的过渡是为了向后兼容。
我相信,世界上大多数国家,最重要的运营商是0 =假。除0之外的任何值均解析为true。
虽然在很多情况下,我打赌的标准是0 =假1 =真。当Microsoft开发VB.NET时,他们需要保留向后兼容性,以便从Visual Basic 6.0/VBA中保留-1 = true。因此,他们的True = <> 0。通过这种方式,1或-1将解析为真。这似乎比一个更复杂的条件语句更清晰,它涵盖了1或-1两种情况。本质是什么,他们降落直的评价比0
以外的任何值进行核对。如果你仔细想想,这似乎与基本的二进制概念一致为好。开关打开(除0之外的某个值)或关闭(值为零)。
我明白了。我并不真正理解这种实现的巨大好处 - 我通常是一个“明确的而不是隐含的” - 种人,但这是一个不同的问题。 ;) 感谢你的回答。 – 2011-01-21 13:58:05