C# 是否可能从数组派生?

C# 是否可能从数组派生?,c#,arrays,inheritance,memory,memory-management,C#,Arrays,Inheritance,Memory,Memory Management,目前我有一个包含数组和整数的类 我有数百万个这样的对象,我想通过仅仅拥有一个数组来节省内存,所以我为每个对象节省了12个字节(不必为每个对象分配一个类包装器)。这将节省大量内存 不幸的是,我还需要存储整数。我想把它存储在第一个索引中,但它有点乱。我希望我可以从数组派生并在子类中插入int成员,但编译器显然不允许这样做 还有其他选择吗?我想我可以从referencesource框架复制并粘贴array类并添加我的属性,但这似乎有些过分。您不能从数组派生(“从引用源框架复制并粘贴array类”可能对

目前我有一个包含数组和整数的类

我有数百万个这样的对象,我想通过仅仅拥有一个数组来节省内存,所以我为每个对象节省了12个字节(不必为每个对象分配一个类包装器)。这将节省大量内存

不幸的是,我还需要存储整数。我想把它存储在第一个索引中,但它有点乱。我希望我可以从数组派生并在子类中插入int成员,但编译器显然不允许这样做


还有其他选择吗?我想我可以从referencesource框架复制并粘贴array类并添加我的属性,但这似乎有些过分。

您不能从数组派生(“从引用源框架复制并粘贴array类”可能对您没有多大好处,因为数组非常集成到语言/框架中)


一种选择可能是将
struct
与整数和数组一起使用-处理
struct
会让你感到非常痛苦,但如果小心,它将为你提供你想要的东西(如果你的“整数值”是可变的或者数组需要更改大小,我强烈建议你忘记你看到过这样的建议)。

。使用组合而不是继承。如果您想要类似数组的语法,请实现一个索引器。组合的问题是一个对象是12个字节,因此一个具有数组的对象是24个字节(因为数组也是一种引用类型),因此,组合是我目前正在做的事情,我希望有一种替代方法来节省内存。我认为您不能只使用
.Length
,因为您的数组可能包含的元素少于声明的数组大小?抱歉,但您仍然不能这样做。不太清楚为什么会有“数百万”个阵列;有可能对更大的前景采取更为深思熟虑的方法来解决这一问题。您可能还会发现,您可以在一个数组中维护
int
值,并在另一个数组中维护对数组本身的引用,从而形成一个并行数据结构,其中对象是通过索引而不是引用来标识的。在任何情况下,虽然12字节*百万在理论上都是大量内存,“
int
+array”*百万也是如此。也就是说,即使每个对象保存12个字节,您也已经存在内存问题。理所当然地,您断言使用类会为每个对象添加12个额外字节,1200万字节仅为12兆字节。我知道有些嵌入式系统内存有限,但如果你真的因为额外的12MB而开始达到内存限制,我会感到震惊。