====== 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