ユーザ用ツール

サイト用ツール


サイドバー

dotnet:linqの遅延事項

以前のリビジョンの文書です


Linqの遅延実行

"Program.cs"
var m = new Math();
m.Calc();
 
class Math{
    public Math(){
 
    }
    public void Calc(){
        List<string> col = new List<string> {"red","blue","yellow"};
 
        var y = col.Select(x => {
            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<string> col = new List<string> {"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
dotnet/linqの遅延事項.1663766231.txt.gz · 最終更新: 2022/09/21 22:17 by ips