我正在尝试使用 Literal 匹配 Empty Guid,但我无法弄清楚这里发生了什么:
let [<Literal>] EmptyGuid = System.Guid ()
let someFunction () = System.Guid.NewGuid () |> Some
match someFunction () with
| None -> printfn "None"
| Some EmptyGuid -> printfn "Some EmptyGuid"
// ^ Comment this line out and it works!
| Some guid -> guid.ToString "D" |> printfn "Some Guid: %s"
当我尝试运行上面的程序时,我随机得到两个不同的异常:
AccessViolationException 未处理:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
或者:
InvalidProgramException 未处理:公共语言运行时检测到无效程序。
这不会是我的错吧?要么我非常愚蠢,要么发生了一些非常奇怪的事情......
编辑:
我刚刚注意到出现哪个异常:
- 使用 .NET 4.5 时出现 AccessViolationException
- 使用 .NET 4 时出现 InvalidProgramException