c# - 这些枚举代码的功能相同吗?

标签 c# .net linq ienumerable

foreach ( Effect effect in this.Effects.Where ( e => e.IsTransparentEffect && e.HasGPUSupport ) )
    yield return new RealtimeEffect<TransparentEffect> ( effect );

对比

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

我不知何故认为 Select 会尝试以不同的方式收集结果,而不是像 #1 那样只是产生结果?

还有性能差异吗?

最佳答案

它在功能上绝对是相同的(尽管我假设您的 LINQ 示例中缺少 new 关键字是一个拼写错误)。

Select 中有一些 null 检查,但这不太可能显着影响性能。

Jon Skeet 在他的博客上写了一篇很好的文章:http://msmvps.com/blogs/jon_skeet/archive/2010/12/23/reimplementing-linq-to-objects-part-3-quot-select-quot-and-a-rename.aspx

关于c# - 这些枚举代码的功能相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952023/

相关文章:

c# - WebBrowser网站超时

.net - Windows Service System.Timers.Timer无法启动

c# - 删除 XYZ 点列表中的重复项

c# - 在 LINQPad 中编写 F# 查询

mysql - Linq to EF 不返回所有数据

c# - Array.Sort() 对原始数组进行排序,而不仅仅是复制

c# - 并行执行oracle SQL语句的最佳方式

c# - 如何将表达式 Func<T,int> 转换为 Func<T,object>

c# - 将附加对象传递给 CreateMap

c# - 在 C# 中对单个文件使用 FileSystemWatcher