0

Bill Wagners Book "Effective C#" で、従来のループ ( for ) よりも宣言的なselectステートメントを優先する必要があることを読みました。

例えば:

 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速くなります!LINQside 式ツリーの評価/最適化などは行われないため...

しかし、a を使用することで得られる本当の利益selectは、「遅延実行」です。

が配置されているコードのforセクションにプログラム ポインターがある場合、ループは即座に実行forされます。ステートメントは、select必要なときにのみ実行され、必要なときにのみ実行されます。

于 2012-10-25T08:11:23.110 に答える