好的做法?重新定义数组以改变其大小

时间:2014-06-26 03:45:48

标签: c# arrays

我在Unity中使用C#工作,但这是一个更通用的编程练习题。

dataType[] array = new dataType[x];

//Further down
dataType[] newArray = new dataType[array.Length + 1];

for (int i=0;i<array.Length;i++){
    newArray[i] = array[i];
}

这被认为是不好的做法吗?是否比使用ArrayList更有效/更低效? 我只是在一个级别的开始执行此操作,然后再也不会再执行此操作,所以是否值得使用ArrayLists?

2 个答案:

答案 0 :(得分:1)

当您不知道数组的确切大小时,应该使用动态数据结构。如果与ArrayList进行比较,List是更好的选择。 ArrayList仅适用于对象,而List&lt;&gt;使用泛型(也适用于特定类型或对象)。这将有助于您创建高性能和可维护的代码。

答案 1 :(得分:0)

是的,这是不好的做法。如果您希望更改数组大小,请使用List而不是Array。列表在索引方面就像数组一样工作。要向列表中添加新项,请使用Add()。您甚至可以在列表上调用ToArray()以从中获取数组。

http://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx

如果您遇到无法使用List并需要扩展Array的情况,请使用Array.Resize(),如下所示。

int[] array = new int[5];

Console.WriteLine(array.Length);

Array.Resize<int>(ref array, 20);

Console.WriteLine(array.Length);