F# 使用字符串的NullReferenceException.Contains

F# 使用字符串的NullReferenceException.Contains,f#,F#,我不知道为什么会在列表中出现该异常。筛选器是以下代码的一部分: pdfLinks |> List.filter(fun x -> x.Contains("shop")) |> List.iter (printfn "%s") pdfLinks是“字符串列表”类型,它填充了大量包含单词“shop”的字符串 它在F#与虚拟列表交互时工作正常。原始的HTML文件是通过解析HTML文件生成的,但通过手表检查显示它具有所需类型的所需值 知道会发生什么吗 谢谢 尝试在列表中添加对Syst

我不知道为什么会在列表中出现该异常。筛选器是以下代码的一部分:

pdfLinks |> List.filter(fun x -> x.Contains("shop")) |> List.iter (printfn "%s")
pdfLinks是“字符串列表”类型,它填充了大量包含单词“shop”的字符串

它在F#与虚拟列表交互时工作正常。原始的HTML文件是通过解析HTML文件生成的,但通过手表检查显示它具有所需类型的所需值

知道会发生什么吗


谢谢

尝试在
列表中添加对
System.String.IsNullOrEmpty
的调用。筛选
,看看它是否解决了问题:

pdfLinks
|> List.filter(fun x ->
    (not <| System.String.IsNullOrEmpty x) &&
    x.Contains("shop"))
|> List.iter (printfn "%s")
pdfLinks
|>列表.过滤器(乐趣x->
(不是List.iter(printfn“%s”)

也许其中有一个是空的?看起来不是这样……尽管我只能通过手表查看前50个。打印它们时会显示一些可能是空值造成的空行。我会先检查空值,然后返回答案。谢谢!就是这样。正如@chaospanion还指出的,我得到了一个空字符串,因为它似乎是我正在使用的库当与C#code;交互时,我有时会忘记我们没有商品选项。)。非常感谢!当从“外部世界”获取输入时,通常最好映射到选项类型,并适当处理它们。在您的情况下,获取pdf链接列表并映射到
string option
,然后您的其余代码将自动工作(因为您必须处理它)。