1

LINQクイズの質問と回答からQ4とQ5へ

colors配列を次のように定義します 。

string[] colors = { "green", "brown", "blue", "red" };

回答からQ4へのクエリ:

var query =
  from c in colors
  where c.Length == colors.Max (c2 => c2.Length)
  select c;

c2.Length外部クエリの反復式が16回評価されること を正しく理解していますか?

сつまり、colors配列内のアイテムごとに、colors.Max (c2 => c2.Length)が1回評価されます。つまり、Max()計算は合計4回行われます。Max()そして、評価ごとc2.Lengthに4回見つかりますか?

4

1 に答える 1

4

それは正解です。LINQPadをお持ちの場合は、簡単に確認できます。

string[] colors = { "green", "brown", "blue", "red" };

int count = 0;

var query =
    from c in colors
    where c.Length == colors.Max (c2 => 
        {
            count.Dump();
            count++;
            return c2.Length;
        }
    )
    select c;

query.Dump();
于 2013-02-23T13:39:25.363 に答える