【发布时间】:2016-02-13 15:35:56
【问题描述】:
我的应用程序的基本构建块类型分解为一个类型(类或结构),其中包含一些标准值类型(int、bool 等)和一些标准值类型的数组类型,其中会有一个小的 (但未知)集合中的元素数量。
鉴于我有很多上述构建块的实例,我想通过使用数组/集合作为值类型而不是标准引用类型来限制我的基本类型的内存使用。部分问题是我的标准用法是让数组中包含零个、一个或两个元素,并且在这种情况下数组引用类型的开销是令人望而却步的。
我已经根据经验观察并研究证实,数组包装器本身在每个实例中都会引入不需要的(在这种情况下是我)开销。
如何在 .NET 中将集合设为值类型/结构?
旁注:有趣的是,Apple 的 Swift 语言默认将数组作为值类型。
抢先评论
我完全清楚以上是使用 .NET 框架的非标准方式,并且是非常糟糕的做法等......所以没有必要对此发表评论。我真的只是想知道如何实现我的要求。
【问题讨论】:
-
你想在你的结构中包含值类型数组吗?还是没有数组开销的结构数组?
-
@ThomasBoby 前者是我要问的,但结果也会是后者,因为我的结构中数组的内容本身就是结构。尝试将所有内容保持为结构以避免内存压力。
-
你不能也不想。为什么以某种方式创建值类型数组会限制内存使用?我倾向于认为相反。
标签: c# .net arrays collections f#