你需要像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"
}
}
示例代码将是一个很大的帮助。我不知道你的意思是“如果语句评估为false”,如果发生这种情况,那么内部的东西不会被执行,并且循环会像平常一样继续。 – DisgruntledGoat 2009-10-06 22:37:08
提供示例代码。 – abelenky 2009-10-06 22:40:41