私はちょうどFirstOrDefault()
の戻り値の種類が選択されている要素の値に応じて異なりますことを説明したSO postを読んでいます。IntおよびIntでのFirstOrDefaultの動作
例:この例では
ICollection<String> list = new List<String>();
list.Add("bye");
int a = (from x in list where (x == "hi") select x.Length).FirstOrDefault();
int
デフォルト値はしかし、私はするために既にリンクされたポストに従って.Cast<int?>()
を追加することができ0
あるので、a
が0に等しくなりますクエリーが0の結果を返すときはnull
を取得します。私の最初の例のために、私はNull許容int型(int?
)ではなく、通常のint
を使用する場合、私はコンパイル時エラー(または少なくとも警告)を取得しないのはなぜ
int? a = (from x in list where ... x.Length).Cast<int?>().FirstOrDefault();
?
私が正しく理解していれば、私の最初のクエリを実行するときint?
を使用すると、null
の値では決して結果をます。私の最初の例のために、私は、その後のNullable int
ではなく、定期的なint
を使用する場合、私はコンパイル時エラー(または少なくとも警告)を取得しないのはなぜ
あなたの質問は私には分かりません。どのような正確なコードは、エラー/警告を予期した場所で警告なくコンパイルしますか? 'int'のdefalt値は' 0'で、 'int'のdefalt値は' null'です。 –
こんにちは@JeppeStigNielsen - 私は上記の 'int?'の例のために、 'null'が返されることはないのに、コンパイラがNullable型を使用させる理由を混乱させました。 'dasblinkenlight'は私の質問に完全に答えました。 –