这循环怎么做?

sv23vg 2012-10-04 12:17:51
foreach(var c in list)
{
if()
{
判断执行
...
}
}



上面那个循环,一旦遇到if为true,那么,后面的foreach都不用判断了,直接执行if里面的语句,该怎么做?因为,如果元素很多的话,既然,都不用判断了,又为何要因为判断而影响效率。
...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
w051108 2012-10-04
  • 打赏
  • 举报
回复
break掉?

每次循环被打断会影响效能
sv23vg 2012-10-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

呵呵,多做一个判断所消耗的额外时间,小到你绝对无法测量出来,所以这个问题没必要解决,
[/Quote]
要看是什么判断了..
dalmeeme 2012-10-04
  • 打赏
  • 举报
回复
改成“大于等于3”比较恰当点:
        List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
for (int i = 0; i < list.Count; i++)
{
if (list[i] >= 3)
{
for (; i < list.Count; i++)
Console.WriteLine(list[i]);
break;
}
}
dalmeeme 2012-10-04
  • 打赏
  • 举报
回复
有一种思路,可以改用for来实现:
		List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
for (int i = 0; i < list.Count; i++)
{
if (list[i] == 3)
{
for (; i < list.Count; i++)
Console.WriteLine(list[i]);
break;
}
}
dianyancao 2012-10-04
  • 打赏
  • 举报
回复
同问啊

C#怎么在执行完一句判断语句后,在循环内将其移除?
threenewbee 2012-10-04
  • 打赏
  • 举报
回复
比如如下代码
List<int> list = new List<int>() { 1, 3, 10, 6, 4, 2, 15, 1, 10, 8, 9, 20, 4, 11, 3 };
foreach (int i in list)
{
if (i > 10)
{
Console.WriteLine("{0} larger than 10! Loops are breaked.", i);
break;
}
else
{
Console.WriteLine(i);
}
}

可以简化为
List<int> list = new List<int>() { 1, 3, 10, 6, 4, 2, 15, 1, 10, 8, 9, 20, 4, 11, 3 };
foreach (int i in list.TakeWhile(x => x <= 10))
Console.WriteLine(i);
Console.WriteLine("{0} larger than 10! Loops are breaked.", list.First(x => x > 10));
stonespace 2012-10-04
  • 打赏
  • 举报
回复
呵呵,多做一个判断所消耗的额外时间,小到你绝对无法测量出来,所以这个问题没必要解决,

110,591

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧