FirstOrDefault()
以下のコードは、メソッド内で NullReferenceException をスローします。
open System
open System.Collections.Generic
open System.Linq
[<EntryPoint>]
let main argv =
let suspects = seq {
yield ("Frank", 1.0)
yield ("Suzie", 0.9)
yield ("John", 0.5)
// yield ("Keyser Soze", 0.3)
}
let likely = suspects.FirstOrDefault(fun (name, confidence) -> name = "Keyser Soze")
printfn "Name: %s" (fst likely)
Console.ReadLine() |> ignore
0
それを回避する最善の方法は何ですか?それをキャッチするのは間違っているようです。イテレータを手動で取得して while ループに入れることもできますが、それは非常に多くのレベルで間違っています。
[編集] C# で行うこと、つまり、結果が null かデフォルトかを確認することさえできません。その理由は 2 つあります: (1)FirstOrDefault()
結果を参照するときではなく、メソッドでエラーがスローされる; (2) null をチェックしようとすると、コンパイラは「型 '(string * float)' には適切な値として 'null' がありません」と不平を言います:
if likely = null then
printfn "Nothing to see here"
助言がありますか?