哪种条件循环更有效?

时间:2014-11-26 04:31:12

标签: c# collections foreach

假设我有以下集合

IEnumerable<car> cars = new IEnumerable<car>();

现在我需要循环这个集合。

我需要根据车型做一些功能;所以我可以通过以下方式之一:
方法A:

       foreach( var item in cars){
           if(item.color == white){
              doSomething();
           }
           else{
              doSomeOtherThing();
           }

       }

或其他方式:
方法B:

foreach( var item in cars.where(c=>c.color==white)){
   doSomething();
}

foreach( var item in cars.where(c=>c.color!=white)){
  doSomeOtherthing();
}
对我来说,我认为方法A更好。我只在集合上循环一次 而方法B似乎很诱人。框架将为您循环和过滤集合。

那么哪种方法更好更快?

2 个答案:

答案 0 :(得分:1)

嗯,这取决于过滤过程的复杂程度。它可能非常有效,以至于无关紧要,特别是考虑到你不再需要做 >使用if语句进行过滤。

我会说一件事:除非你的收藏品非常庞大,它可能不会给你带来足够的差异。而且,有时候,优化可读性而不是速度更好: - )

但是,如果您真的想知道,那么度量!使用合适的类似生产的测试数据为您的环境中的操作计时。这是确定的唯一方法。

答案 1 :(得分:0)

方法A比方法B更具可读性。只有一个问题,是car.color还是item.color?