假设我有以下集合
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似乎很诱人。框架将为您循环和过滤集合。
那么哪种方法更好更快?
答案 0 :(得分:1)
嗯,这取决于过滤过程的复杂程度。它可能非常有效,以至于无关紧要,特别是考虑到你不再需要做 >使用if
语句进行过滤。
我会说一件事:除非你的收藏品非常庞大,它可能不会给你带来足够的差异。而且,有时候,优化可读性而不是速度更好: - )
但是,如果您真的想知道,那么度量!使用合适的类似生产的测试数据为您的环境中的操作计时。这是确定的唯一方法。
答案 1 :(得分:0)
方法A比方法B更具可读性。只有一个问题,是car.color还是item.color?