====== Linqの遅延実行 ====== var m = new Math(); m.Calc(); class Math{ public Math(){ } public void Calc(){ List col = new List {"red","blue","yellow"}; var y = col.Select(x => { Write(x); // Selectは遅延実行なので、Write(x)は書いただけでは呼ばれない return x; }); } public void Write(string msg){ Console.WriteLine(msg); } } 結果は何も出力されない。 Selectは遅延実行なので、foreachで呼ばれたり、ToList()、ToArray()が呼ばれなければ実際には実行されないからだ。 ・・・ var y = col.Select(x => { Write(x); return x; }).ToList(); // ToList()やToArray()をする ・・・ public void Calc(){ List col = new List {"red","blue","yellow"}; var y = col.Select(x => { Write(x); return x; }); foreach(var c in y) // foearchでlinqを呼ぶ { Console.Write("");  } } とするとlinqが実行される。 # dotnet run red blue yellow