【发布时间】:2012-04-13 12:55:08
【问题描述】:
我有一个 while 循环,循环条件如下:
while (i != repetitionString.Length || !repetitionString[i].Equals(')'))
条件的第一部分检查是否未到达集合的末尾。 ||后面的部分在左侧条件不满足后是否可以不执行?这背后的原因是,如果左侧的条件不满足,那么这意味着集合超出范围,因此右侧的评估/检查将抛出异常。
可以这样做吗?
【问题讨论】:
-
||是短路的,所以应该默认这样做。 -
@asawyer 不是用于错误的左值,而是使用 AND。 OR 只会在左操作数为真时短路。反之,AND只会在左操作数为假的情况下短路。
-
为了完整起见...短路在 VB.NET 中的工作方式不同。在 VB.NET 中,And 和 Or 运算符不会短路。您必须使用 AndAlso 和 OrElse 运算符来获得短路行为。这与 VB6 一致,VB6 也没有短路 And 和 Or 运算符。
-
@asawyer 问题是在未设置左侧操作时不调用右侧(假)。
标签: c# .net oop while-loop