如果我有以下...

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主要是为了向后兼容。

10-08 11:24