普通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}
Run Code Online (Sandbox Code Playgroud)
我知道上面的内容并不是惯用的F#,但我试图优化我的应用程序的一部分性能,并且分析清楚地表明堆分配(JIT_new)的成本是导致我的性能瓶颈的原因.简单的联合类型是满足我需求的完美数据结构,而不是堆分配的.