当前位置:  开发笔记 > 编程语言 > 正文

如何以及何时放弃在C#中使用数组?

如何解决《如何以及何时放弃在C#中使用数组?》经验,为你挑选了2个好方法。

我总是被告知在数组中添加元素的方式如下:

创建数组+ 1element的空副本,然后将原始数组中的数据复制到其中,然后加载新元素的新数据

如果这是真的,那么由于内存和CPU利用率的原因,在需要大量元素活动的场景中使用数组是正确的,对吗?

如果是这种情况,你是否应该尽量避免在添加大量元素时尽可能多地使用数组?你应该使用iStringMap吗?如果是这样,如果您需要两个以上的维度并且需要添加大量元素添加,会发生什么.你刚刚受到性能打击还是应该使用其他东西?



1> Joel Coehoor..:

将泛型List视为数组的替代.它们支持大多数数组所做的事情,包括根据需要分配初始存储大小.


如果设计可重用或类似框架的组件,请考虑使用基类或接口,ICollection 或IEnumerable .静态代码分析应该告诉你这个并链接到更好的信息(它是继承等).

2> Alex Lyman..:

这实际上取决于"添加"的含义.

如果你的意思是:

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)

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有