我正在编写一个包含多个if语句的for循环.
如果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.
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
谢谢
Dan*_*ker 16
您需要continue关键字等功能- 您考虑过使用continue关键字吗?
更新:您的示例代码很难破译的意图.
for (int i = 0; i <= Collection.Count && Collection[i].Name != "Alan"; i++)
{
// If name is not Alan, increment i.
}
Run Code Online (Sandbox Code Playgroud)
该for环有三个部分到它,由两个分号隔开.第一部分初始化循环变量.第二部分是每次迭代即将开始时计算的表达式; 如果为false,则循环终止.第三部分在每次迭代后执行.
因此,上面的循环将在它遇到的第一个"Alan"处退出,并且i每次完成迭代时它都会递增.最后,如果没有Alans,它将执行最后一次i等于Collection.Count,这比集合中的最大有效索引大一.因此,当你超出范围Collection[i]时尝试访问时,它肯定会抛出异常i.
也许你想要这个:
foreach (var item in Collection.Where(i => i.Name != "Alan"))
{
// item is not an "Alan"
}
Run Code Online (Sandbox Code Playgroud)
您可以将Where扩展方法视为过滤集合的一种方法.
如果这看起来很模糊,你可以用continue关键字实现相同的功能(如你所猜测的那样):
foreach (var item in Collection)
{
if (item.Name == "Alan")
continue;
// item is not an "Alan"
}
Run Code Online (Sandbox Code Playgroud)
或者您可以将代码放在if块中:
foreach (var item in Collection)
{
if (item.Name != "Alan")
{
// item is not an "Alan"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3141 次 |
| 最近记录: |