Tag: discriminated union

如何在F#中创建一个值类型的Union类型?

普通F#区分联合是引用类型。 如何在F#中创建一个简单的 (非递归的,只有值类型的字段)联合类型,它是一个值类型? 根据一些互联网搜索,我当前(非工作)的尝试看起来如下: [] type Float = [] [] val mutable Val1 : float [] [] val mutable Int1 : int new (a:float) = {Val1 = a} 以下博客文章显示通过C#显示可能的内容 我知道上面的内容不是F#的习惯用法,但我试图优化我的部分应用程序的性能,并且分析清楚地表明堆分配(JIT_new)的成本是导致我的性能瓶颈的原因。一个简单的联合类型是满足我需求的完美数据结构,而不是堆分配的。

如何在C#中复制F#区分联合类型?

我创建了一个名为Actor的新类,它处理传递给它的消息。 我遇到的问题是弄清楚将相关但不同的消息传递给Actor的最优雅方式是什么。 我的第一个想法是使用inheritance,但它似乎是如此膨胀,但它是强烈的类型,这是一个明确的要求。 有什么想法吗? 例 private abstract class QueueMessage { } private class ClearMessage : QueueMessage { public static readonly ClearMessage Instance = new ClearMessage(); private ClearMessage() { } } private class TryDequeueMessage : QueueMessage { public static readonly TryDequeueMessage Instance = new TryDequeueMessage(); private TryDequeueMessage() { } } private class EnqueueMessage : QueueMessage { […]