如果我有以下...
a OrElse b
...并且a是真,那么显然b永远不会被求值。但是,如果我添加
Or
,那又如何呢?a OrElse b Or c
是否/应该进行评估?如果我放在括号中怎么办?
抱歉,如果这是基本的。当然,我可以自己测试答案,但是找不到在这里或其他地方回答的问题。关于或与OrElse 的问题很多,但没有涉及或与OrElse 的问题
最佳答案
这是一个运算符优先级问题。相关文档在这里:
http://msdn.microsoft.com/en-us/library/fw84t893.aspx?ppud=4
重要摘录:
和
因此,我们在这里了解到的是Or和OrElse具有相同的优先级,并且具有相同优先级的运算符从左到右进行求值。
因此,我希望在a
为true的情况下,不评估b
。但是,c
仍然会。在a
为false的情况下,将评估b
,并且无论b
的值如何,“或”运算符都将评估c
。因此,是的,c
总是被评估。
实际上,除非有充分的理由使用OrElse
,否则通常应在代码中使用Or
。现在存在Or
主要是为了向后兼容。