作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(OrElse 和 Or) 和 (AndAlso 和 And) 之间有什么区别?他们的表现有什么不同吗,比如说正确性的好处?有什么情况我不应该使用 OrElse 和 AndAlso 吗?
最佳答案
Or/And
将始终计算两个1表达式,然后返回结果。它们没有短路。
OrElse/AndAlso
是 short-circuiting 。仅当无法仅根据左侧表达式的求值确定结果时,才求值右侧表达式。 (这意味着:OrElse
仅在左侧表达式为 false 时才会计算右侧表达式,而 AndAlso
仅在左侧表达式为 true 时才会计算右侧表达式。)
假设表达式中没有副作用发生,并且表达式不相关(并且忽略任何执行开销),那么它们是相同的。
但是,在许多情况下,表达式是相关的。例如,当 List 不为空并且有多个元素时,我们想要做某事:
If list IsNot Nothing AndAlso list.Length > 0 Then .. 'list has stuff
这也可以用来避免“昂贵的”计算(或副作用,恶心!):
If Not Validate(x) OrElse Not ExpensiveValidate(x) Then .. 'not valid
就我个人而言,我发现 AndAlso
和 OrElse
是在除 1% 或更少之外的所有操作符中使用的正确运算符,希望如此! - 需要副作用的情况。
祝你编码愉快。
<小时/>1 第一个表达式中抛出的异常将阻止第二个表达式的计算,但这不足为奇..
关于vb.net - (OrElse 和 Or) 和 (AndAlso 和 And) - 何时使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8409467/
我是一名优秀的程序员,十分优秀!