For循环 - 如果布尔条件计算结果为false,则继续
我正在为多个if语句编写for循环。For循环 - 如果布尔条件计算结果为false,则继续
如果for语句中的if语句(或其中的一部分)计算结果为false,那么循环不会退出,但循环的迭代次数增加1,并继续循环(我需要功能像continue;关键字)。
例子:
for (int i = 0; i <= Collection.Count && Collection[i].Name != "Alan"; i++)
{
// If name is not Alan, increment i and continue the loop.
}
这可能吗?
感谢
你需要像continue
关键字功能 - 你考虑过使用continue
关键字,然后呢?
更新:您的示例代码很难破译的意图。
for (int i = 0; i <= Collection.Count && Collection[i].Name != "Alan"; i++)
{
// If name is not Alan, increment i.
}
for
loop有三个部分,用两个分号隔开。第一部分初始化循环变量。第二部分是每次迭代即将开始时评估的表达式;如果它是假的,则循环终止。第三部分在每次迭代后执行。
因此,上面的循环将在遇到的第一个“Alan”时退出,并且每次完成迭代时它都会增加i
。最后,如果没有Alans,它将执行最后一次i
等于Collection.Count
,这比集合中的最大有效索引大一个。因此,当你尝试访问Collection[i]
时i
超出范围,它肯定会抛出异常。
也许你想这样的:
foreach (var item in Collection.Where(i => i.Name != "Alan"))
{
// item is not an "Alan"
}
你可以认为Where
扩展方法筛选集合的方式。
如果这看起来不起眼,就可以实现与continue
关键字一样的东西(如你猜):
foreach (var item in Collection)
{
if (item.Name == "Alan")
continue;
// item is not an "Alan"
}
或者你可以把代码中的if
的块:
foreach (var item in Collection)
{
if (item.Name != "Alan")
{
// item is not an "Alan"
}
}
感谢您的解释。我知道Where()方法,但认为可以像上面那样处理事情,但我想这不是正确的方法!谢谢。 – dotnetdev 2009-10-06 22:58:49
你的意思是这样吗?
for (int i = 0; i < 100;) {
if (!condition1) {
i++;
}
if (!condition2) {
i++;
}
if (!condition3) {
i++;
}
}
你是否希望增量器完成for循环在循环体中?
我不知道我的理解是否正确。你有一个for循环这样的事情
for (int i = 0; i < 10; i++)
{
// do something
if (!b1)
i++
// do something
}
编辑:
如果继续使用它增加了我一次。如果你在循环中使用i ++,它显然会增加两倍。如果你只想在某个条件下进行修改,可以使用for循环,如下所示:
for(int i = 0; i < 10)//这与while循环非常相似。
从您的示例代码中,我认为您正在搜索名称“Alan”。 这是正确的吗?
如果是这样,你的结构像循环:
for (int i = 0; i < Collection.Count; i++)
{
if (Collection[i].Name == "Alan")
{
break; // We found the name we wanted!
}
// Otherwise: Keep going to look for the name further on.
}
if (i == Collection.Count)
{
Console.WriteLine("Alan is not found");
}
else
{
Console.WriteLine("Alan found at position {0}", i);
}
示例代码将是一个很大的帮助。我不知道你的意思是“如果语句评估为false”,如果发生这种情况,那么内部的东西不会被执行,并且循环会像平常一样继续。 – DisgruntledGoat 2009-10-06 22:37:08
提供示例代码。 – abelenky 2009-10-06 22:40:41