http://msdn.microsoft.com/en-us/library/ms379570(v=vs.80).aspx http://msdn.microsoft.com/en-us/library/ms379570(v=vs.80).aspx
我知道Arrays
in .net
存储在一个连续的时尚。 (男性)
我也知道List<..>
不是。 (嗯...并非所有列表类型...请参阅我的第二个问题)
从这里我有两个问题
-
我知道在 4,8,16 之后...将项目插入到列表中 - 列表reallocate
记忆中的自己。
我也知道我可以向他发送Capacity
在 ctor 中,以便让他知道我将创建他的大小(以减少重新分配)。
问题是why?他不连续存储自身,那么为什么他关心重新
分配自己? (他不必找到空闲且连续的存储单元)
与类列表不同,为什么带有结构的列表分配在连续内存中?
List<T>
确实连续存储内存。在内部,它使用数组进行存储。当达到容量时,将分配一个新数组并复制内存。
这对于List<T>
类或结构的实例。然而,当T
是一个引用类型(类),您正在存储一个连续的参考文献列表。类实例不能连续,因为您可以包含一个包含 100 个引用的列表同一个实例一个类的。
因此,为了解决您的具体问题:
问题是为什么?他不会连续存储自己,那么为什么他关心重新分配自己呢?
It does连续存储项目,这就是需要重新分配的原因。
与类列表不同,为什么带有结构的列表分配在连续内存中?
两者都是连续存储的,但在第二种情况(类)中,您存储对类实例的引用列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)