我刚刚替换了这段代码:
foreach( var source in m_sources )
{
if( !source.IsExhausted )
{
....
}
}
有了这个:
foreach( var source in m_sources.Where( src => !src.IsExhausted ) )
{
...
}
现在代码看起来更好(对我来说),但我想知道这里到底发生了什么。我担心这种情况下的性能,如果应用此过滤器意味着会发生某种编译器魔法,那将是个坏消息。
这两段代码基本上是在做“相同”的事情吗?是否创建了临时容器来进行过滤,然后将它们传递给我的 foreach?
任何有关该主题的帮助将不胜感激。谢谢。