如果条件失败,如何停止执行while循环的条件

时间:2012-03-29 20:15:07

标签: c# .net oop while-loop

我有一个while循环,循环条件是这样的:

while (i != repetitionString.Length || !repetitionString[i].Equals(')'))

条件的第一部分检查是否未到达集合的结尾。在不满足左侧条件后,是否可以不执行||之后的部分?这背后的原因是如果不满足左侧的条件,那么这意味着集合超出界限,因此右侧的评估/检查将抛出异常。

是否可以这样做?

4 个答案:

答案 0 :(得分:4)

你只需使用&&而不是||。因为只有在第一个条件返回true时才应检查正确的条件。

答案 1 :(得分:2)

无论如何都会发生这种情况 - 如果左边的布尔条件的计算结果为false,则只会执行右边的布尔条件。您可以使用二进制逻辑(单|强制执行正确的,但这不是您想要做的,因此您当前的语句将执行得很好。

看起来你真正想要的是:

while (i < repetitionString.Length && repetitionString[i]!=")")
{

}

答案 2 :(得分:0)

短路已经发生。

我的猜测是repetitionString是从零开始的索引,而.Length则返回总计数。因此,您需要修改if以保持边界:

while (i != (repetitionString.Length - 1) || !repetitionString[i].Equals(')'))

答案 3 :(得分:0)

这看起来相当于:

if (attribute != null || attribute.value != null)

因为你无法使用

if (attribute.value != null) 

因为这会在属性== null时引发错误,所以我认为你的代码是正确的?

当条件

i != repetitionString.Length
满足

,代码将跳过||

之后的部分

因为它是一个OR表达式,所以当条件的第一部分返回true时,不需要检查条件的第二部分。

当你使用&amp;&amp;而不是||,将始终检查两个条件。这不是你想要做的。