C#3.0からLINQという機能が加わったのはいまさらですが、まだ知らない部分があったので今回はそれを紹介します。 ちなみにLINQの基礎的な部分はここでは解説しないので別サイトを参照してください。 まずLINQでは遅延評価というものが行われます。lazy listと言ったりもします。 遅延評価を超簡単に説明すると、値が実際に必要とされるまで実行を先延ばしして処理にかかる時間を分散させることができる仕組みです。 この辺も詳しく説明されているサイトが別にあるので、詳しく知りたい方は頑張って探してね。 遅延評価が行われる構造の場合、二度同じ部分の値が必要になったとき、 一度目は実行して値を求めるのですが二度目は一度目の値を保存しておきそれをすぐに返すということをします。 これをキャッシングと言ったりするのですが、実はLINQの遅延評価の構造ではキャッシングが行われません。 つまり二度同じ部分の
![LINQの遅延評価とキャッシング - aharisuのごみ箱](https://cdn-ak-scissors.b.st-hatena.com/image/square/99c38b4839b9f335d09c6625b3c1a30934ebcaf5/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fa%2Faharisu%2F20090604%2F20090604064204.png)