我正在使用第三方 API,该 API 相当笨拙地使用 ref 参数来生成输出。就我个人而言,我真的很讨厌这种 API 设计,但这是我现在可以使用的。由于专有代码,我不得不稍微隐藏 API 的数据类型,但这应该与手头的问题无关。
无论如何,在 C# 中,我可以成功地将空引用作为 ref 参数传递,如下所示:
IDataType tl = null;
bool success = api.myFunction(ref tl);
但是在 F# 中,以下内容将不起作用
let mutable tl : IDataType = null //null reference assignment in F#
let success = api.myFunction(&tl) //& means ref in F#
它返回一个空引用异常错误。在 C# 中不返回此类错误。
有没有人经历过这个?我认为这一定是 API 本身的一个错误,这是一个相对古老的设计。
**编辑:这应该关闭,我相信答案不在于 F# 代码,而在于 API,因为它已经是许多与此类似的已知错误。