Joe*_*orn 22
将泛型List<T>
视为数组的替代.它们支持大多数数组所做的事情,包括根据需要分配初始存储大小.
Ale*_*man 12
这实际上取决于"添加"的含义.
如果你的意思是:
T[] array;
int i;
T value;
...
if (i >= 0 && i <= array.Length)
array[i] = value;
Run Code Online (Sandbox Code Playgroud)
然后,不,这不会创建一个新数组,实际上是改变.NET中任何类型的IList的最快方法.
但是,如果你使用的是ArrayList,List,Collection等,那么调用"Add"方法可能会创建一个新数组 - 但是他们对它很聪明,它们不只是调整1个元素,它们几何增长,所以如果你每隔一段时间添加很多值就必须分配一个新的数组.即便如此,如果您知道要添加多少元素,也可以使用"容量"属性强制它预先增长(list.Capacity += numberOfAddedElements
)
一般来说,我更喜欢避免使用数组。只需使用 List<T>。它在内部使用动态大小的数组,并且对于大多数用途来说足够快。如果您使用的是多维数组,请在必要时使用 List<List<List<T>>>。就内存而言,它并没有那么糟糕,并且添加项目要简单得多。
如果您在 0.1% 的使用率中需要极快的速度,请在尝试优化之前确保列表访问确实是问题所在。
归档时间: |
|
查看次数: |
21534 次 |
最近记录: |