<分区>
下面的代码在 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 或 default,原因有二:(1) 在 FirstOrDefault()
方法中抛出错误,而不是当我引用结果时; (2) 如果我尝试检查 null,编译器会提示“类型‘(string * float)’没有‘null’作为正确的值”:
if likely = null then
printfn "Nothing to see here"
有什么建议吗?