4

セットが空の場合にデフォルト値を設定.FirstOrDefault()し、満たされていない条件で呼び出すと、デフォルト値は取得されませんが、型のデフォルト値は取得されます。

int[] list = { 1, 2, 3, 4, 5 };
Console.WriteLine(list.DefaultIfEmpty(1).FirstOrDefault(i => i == 4)); // Outputs 4, as expected
Console.WriteLine(list.DefaultIfEmpty(1).FirstOrDefault(i => i > 5));  // Outputs 0, why??

1に設定しているので、これは直感的ではないように思え.DefaultIfEmpty()ます。なぜ 1 が出力されないのですか?

4

7 に答える 7

1

整数のデフォルト値は です0

FirstOrDefault最初の発生またはデフォルト値を返します。あなたの場合、 を使用してintいるので、それは0です。アイテムを持っていないときに例外が必要な場合は、 を使用してみてくださいFirst(x => x > 5)

于 2013-07-17T17:22:42.760 に答える
1

FirstOrDefaultリストの最初の値ではなく、コレクションのタイプである式の値をdefault(T)参照します。Tその動作を変更することはできません。また、型の既定値を変更することもできません。

于 2013-07-17T17:23:01.857 に答える
1

FirstOrDefault() これは int を返します。int は null 許容ではないため、デフォルトは 0 です。 aspx

于 2013-07-17T17:23:17.013 に答える