gpt4 book ai didi

c# - 编译器是否连接 LINQ where 查询?

转载 作者:太空狗 更新时间:2023-10-29 22:09:43 24 4
gpt4 key购买 nike

考虑以下两个类似的代码示例。

一个where子句。

bool validFactory
= fields
.Where(
fields => field.FieldType == typeof( DependencyPropertyFactory<T> ) &&
field.IsStatic )
.Any();

两个 where 子句。

bool validFactory
= fields
.Where( field => field.FieldType == typeof( DependencyPropertyFactory<T> ) )
.Where( field => field.IsStatic )
.Any();

我更喜欢第二种,因为我发现它更具可读性,而且它导致的格式问题更少,尤其是在使用自动格式设置时。在单独的条件旁边(或什至上方)放置注释以阐明意图时,也会更加清晰。

我的直觉告诉我第二个代码示例效率较低。我当然可以自己编写一个简单的测试(如果没有人知道答案,我也会这样做)。现在我认为这是 SO 的完美食物。 ;p

  1. 一个比另一个更有效率吗?
  2. 编译器是否足够智能来优化它?

最佳答案

编译器 不会尝试优化连续的“where”调用。 运行时库可以。如果您有一大堆彼此并排的“where”和“select”调用,运行时将尝试将它们重组为更有效的形式。

在一些不寻常的情况下,“优化”当然会使事情变得更糟。我似乎记得 Jon Skeet 最近写了一篇关于那个的文章,虽然我不确定它在哪里。

关于c# - 编译器是否连接 LINQ where 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7381940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com