我总是被告知在数组中添加元素的方式如下:
创建数组+ 1element的空副本,然后将原始数组中的数据复制到其中,然后加载新元素的新数据
如果这是真的,那么由于内存和CPU利用率的原因,在需要大量元素活动的场景中使用数组是正确的,对吗?
如果是这种情况,你是否应该尽量避免在添加大量元素时尽可能多地使用数组?你应该使用iStringMap吗?如果是这样,如果您需要两个以上的维度并且需要添加大量元素添加,会发生什么.你刚刚受到性能打击还是应该使用其他东西?
将泛型List
视为数组的替代.它们支持大多数数组所做的事情,包括根据需要分配初始存储大小.
这实际上取决于"添加"的含义.
如果你的意思是:
T[] array; int i; T value; ... if (i >= 0 && i <= array.Length) array[i] = value;
然后,不,这不会创建一个新数组,实际上是改变.NET中任何类型的IList的最快方法.
但是,如果你使用的是ArrayList,List,Collection等,那么调用"Add"方法可能会创建一个新数组 - 但是他们对它很聪明,它们不只是调整1个元素,它们几何增长,所以如果你每隔一段时间添加很多值就必须分配一个新的数组.即便如此,如果您知道要添加多少元素,也可以使用"容量"属性强制它预先增长(list.Capacity += numberOfAddedElements
)