对于动态数组,建议使用List,ArrayList等Collection类
1, 它们可以用Add,Remove来添加/删除成员,而不用担心越出数组边界
2, ArrayList可以直接像数组一样访问其成员,比如:int x=(int)SampleArrayListObject[index];
3, Collection类可以用ToArray()方法轻松地导出成数组。
如果实在不想用Collection类,可以初始化数组时设定长度为1,然后每次添加数组成员前先检查是否需要修改边界,是的话用Array.Resize() 来改变数组大小。不过Array.Resize只适用于一维数组,如果你想在多个维度上都建立动态,以下是二维的代码:
T[,] ResizeArray<T>(T[,] original, int rows, int cols)
{
var newArray = new T[rows,cols];
int minRows = Math.Min(rows, original.GetLength(0));
int minCols = Math.Min(cols, original.GetLength(1));
for(int i = 0; i < minRows; i++)
for(int j = 0; j < minCols; j++)
newArray[i, j] = original[i, j];
return newArray;
}
想必你也看得出来,这样子每次调整数组大小,系统开销是很大的。就算前面提到的.NET提供的Array.Resize()也是用同样的方法实现的:建立新数组,拷贝原数组的内容至新数组。所以不到万不得已,不建议使用。
温馨提示:内容为网友见解,仅供参考