日期:2014-05-17  浏览次数:21191 次

这循环怎么做?
foreach(var c in list)
 {
  if()
  {
  判断执行
  ...
  }
  }



上面那个循环,一旦遇到if为true,那么,后面的foreach都不用判断了,直接执行if里面的语句,该怎么做?因为,如果元素很多的话,既然,都不用判断了,又为何要因为判断而影响效率。

------解决方案--------------------
http://cn.bing.com/search?q=.net+foreach+break&src=IE-TopResult&FORM=IE10TR
------解决方案--------------------
break掉?

每次循环被打断会影响效能
------解决方案--------------------
呵呵,多做一个判断所消耗的额外时间,小到你绝对无法测量出来,所以这个问题没必要解决,
------解决方案--------------------
比如如下代码
C# code
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);
    }
}

------解决方案--------------------
同问啊

C#怎么在执行完一句判断语句后,在循环内将其移除?
------解决方案--------------------
有一种思路,可以改用for来实现:
C# code
        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;
            }
        }

------解决方案--------------------
改成“大于等于3”比较恰当点:
C# code
        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;
            }
        }