我需要给一个byref参数赋值,但是在Windows 8x64框架上使用F# 4.0和.NET 4.5.2时,我不断收到“此值不可变”的投诉。由于我正在实现一个COM接口,所以无法更改签名。以下是最小的错误示例:
module Utils =
let bugFix1([<System.Runtime.InteropServices.Out>] ID : System.String byref) = ID <- "Hi!"
let bugFix1([<System.Runtime.InteropServices.Out>] ID : int byref) = ID <- 0
let bugFix1([<System.Runtime.InteropServices.Out>] ID : System.Guid byref) = ID <- System.Guid.NewGuid()
通过“这个值”,它明确指的是“ID”,因为我分配给“ID”的任何内容都无关紧要。还要注意,类型是否可移植、堆或栈分配也无关紧要。
有没有一种方法声明“ID”为“mutable”?