0

我在 Bill Wagners 的书“Effective C#”中读到,人们应该倾向于使用更多声明性的select语句而不是传统的循环(for)。

例如:

 int[] foo = new int[1000];
 for (int i = 0; i < foo.Length; i++)
     foo[i] = i * i;

是传统的命令式代码,而这将是声明性的 Linq 代码:

 int[] foo2 = (from i in Enumerable.Range(0, 1000)
               select i * i).ToArray();

作为一个老式程序员,我更喜欢第一个版本。

问题是性能如何?我想第一个版本也更快。

4

1 回答 1

3

方式会for更快!因为不会有任何 LINQ 侧表达式树评估/优化等......

但是您从使用 a 中获得的真正利润select是“延迟执行”。

for程序指针位于放置 的代码部分时,循环将立即执行for。该select语句将仅在需要时执行,并且仅在需要时执行。

于 2012-10-25T08:11:23.110 回答