普通的F#判别联合类型是引用类型。我该如何创建一个简单的(非递归且只有值类型字段)F#联合类型,使其成为值类型?
根据一些互联网搜索,我的当前(不起作用的)尝试如下:
[<StructLayout(LayoutKind.Explicit)>]
type Float =
[<DefaultValue>] [<FieldOffset 0>] val mutable Val1 : float
[<DefaultValue>] [<FieldOffset 0>] val mutable Int1 : int
new (a:float) = {Val1 = a}
我知道上面不是F#的典型用法,但我正在尝试优化我的应用程序的某个部分的性能,并且分析清楚表明堆分配(JIT_new)的成本是导致性能瓶颈的原因...一个简单的联合类型是我需要的完美数据结构,只是它不是一个堆分配的。