开发者

Are these enumerations code functionally the same?

foreach ( Effect effect in this.Effects.Wh开发者_StackOverflow社区ere ( e => e.IsTransparentEffect && e.HasGPUSupport ) )
    yield return new RealtimeEffect<TransparentEffect> ( effect );

vs

this.Effects.Where ( e => e.IsTransparentEffect && e.HasGPUSupport )
        .Select ( e => new RealtimeEffect<TransparentEffect> ( e ) );

I somehow think the Select would try to gather the results differently than just yielding it like in #1?

Also would there be any performance difference?


It's definitely functionally identical (although I've assumed that the lack of a new keyword in your LINQ example was a typo).

There's a bit of null checking in Select, but that's unlikely to significantly affect performance.

Jon Skeet has a good writeup on his blog here: http://msmvps.com/blogs/jon_skeet/archive/2010/12/23/reimplementing-linq-to-objects-part-3-quot-select-quot-and-a-rename.aspx


Both codes will return the same results. Both have deferred execution (i.e. nothing will actually be executed until you start enumerating the result) and stream the results (i.e. not buffered). There shouldn't be a significant performance difference between the two versions

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜