如果我声明一个字符数组的列表,它们是在连续的内存中分配还是.NET创建了一个链接列表?
如果它不是连续的,那么我能否声明一个连续的字符数组列表?字符数组的大小是预先知道且固定的(它们都是相同的大小)。
如果它不是连续的,那么我能否声明一个连续的字符数组列表?字符数组的大小是预先知道且固定的(它们都是相同的大小)。
List<T>
保证其元素存储在连续的位置。List<T>
保证的一样,这些引用也是相互连续存储的。但是,数组本身是单独分配的,它们存储的位置与列表无关,只涉及到元素,即引用。因此,在这种情况下,缓存一致性可能成为问题,因为子数组非常小。您将在内存中来回跳跃地从一个数组到另一个数组,我只会相信您所说的代码性能敏感性。内部数组始终为 9 个字符。
N
的最大大小?使用多维数组(但不要使用后者)是您唯一能保证连续分配的方法。List<T>
具有数组的语义,而不是链表。例如,您可以对其进行索引。如果索引的时间复杂度为O(n)(如链表),那将是一个令人讨厌的技巧。 - Ed S.