为什么短路不是VB中的默认行为?

Rob*_*cks 15 vb6 language-design operators short-circuiting

VB具有运算符AndAlsoOrElse,它们执行短路逻辑连接.

为什么这不是AndOr表达式的默认行为,因为短路在每种情况下都很有用.

奇怪的是,这大多数语言相反,其中&&|| 执行短路.

Rob*_*cks 18

因为VB团队必须保持与旧代码(和程序员!)的向后兼容性.

如果短路是默认行为,则编译器会错误地解释按位操作.

我们为什么要介绍AndAlso和OrElse?由Panopticon Central提供

我们的第一个想法是逻辑运算比按位运算更常见,因此我们应该使And和Or成为逻辑运算符并添加名为BitAnd,BitOr,BitXor和BitNot的新的按位运算符(最后两个是完整性).然而,在其中一个测试版中,显然这是一个非常糟糕的主意.一个VB用户忘记新运算符的存在和使用当他意味着BitAnd和Or,当他意味着BitOr将获得编译但产生"坏"结果的代码.

  • 实际上,如果规则是按位"或"运算符将评估右手操作数,除非左手操作数相等,否则可以向按位运算符添加短路行为而不会破坏不依赖于副作用的代码到结果类型的所有位设置值.另一方面,一些现有的代码 - 甚至代码,其中"And"或"Or"的操作数都是由关系运算符产生的 - 确实依赖于评估布尔运算符两侧的副作用. (2认同)