【发布时间】:2016-03-15 19:13:17
【问题描述】:
我需要分配一个 byref 参数,但是,在 Windows 8x64 机器上使用 F# 4.0 和 .NET 4.5.2,我不断收到抱怨 This value is not mutable. 我无法更改签名,因为我正在实施一个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()
this value 绝对是指ID,因为我分配给ID 的内容并不重要。还要注意,该类型是否是 blittable 或它是堆分配还是堆栈分配都无关紧要。
有没有办法将ID 声明为mutable?
【问题讨论】:
-
可能是重复的或至少相似的stackoverflow.com/questions/946338/…
-
你使用的是什么 F# 版本?
-
@FyodorSoikin 好点 - 4.0。我已经编辑了问题以包含它。
标签: f# overriding mutable byref