Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这些枚举代码在功能上是否相同? foreach(在this.Effects.Where(e=>e.IsTransparentEffect&&e.HasGPUSupport)中的效果) 收益-收益-新实时效应(效应);_C#_.net_Linq_Ienumerable - Fatal编程技术网

C# 这些枚举代码在功能上是否相同? foreach(在this.Effects.Where(e=>e.IsTransparentEffect&&e.HasGPUSupport)中的效果) 收益-收益-新实时效应(效应);

C# 这些枚举代码在功能上是否相同? foreach(在this.Effects.Where(e=>e.IsTransparentEffect&&e.HasGPUSupport)中的效果) 收益-收益-新实时效应(效应);,c#,.net,linq,ienumerable,C#,.net,Linq,Ienumerable,vs this.Effects.Where(e=>e.IsTransparentEffect&&e.HasGPUSupport) 。选择(e=>newrealtimeffect(e)); 我不知何故认为,Select会尝试以不同的方式收集结果,而不是像#1 还会有性能差异吗?两个代码将返回相同的结果。两者都具有延迟执行(即,在开始枚举结果之前,实际上不会执行任何操作)和流式处理结果(即未缓冲)。这两个版本之间不应该有显著的性能差异,它在功能上完全相同(尽管我认为在LINQ示例中缺少新的关键字是

vs

this.Effects.Where(e=>e.IsTransparentEffect&&e.HasGPUSupport)
。选择(e=>newrealtimeffect(e));
我不知何故认为,Select会尝试以不同的方式收集结果,而不是像#1


还会有性能差异吗?

两个代码将返回相同的结果。两者都具有延迟执行(即,在开始枚举结果之前,实际上不会执行任何操作)和流式处理结果(即未缓冲)。这两个版本之间不应该有显著的性能差异,它在功能上完全相同(尽管我认为在LINQ示例中缺少
新的
关键字是打字错误)

Select中有一些空检查,但这不太可能显著影响性能


Jon Skeet在他的博客上写得很好:

谢谢添加了新的关键字。
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 ) );