C#中数组扩容的几种方式介绍

1. 使用Array.Resize方法

C#中可以使用Array.Resize方法来扩容数组,该方法会重新分配一个新的数组,并将原数组的数据复制到新数组中。以下是使用Array.Resize方法进行数组扩容的示例:

int[] originalArray = new int[5] {1, 2, 3, 4, 5};

Array.Resize(ref originalArray, 10);

foreach (int num in originalArray)

{

Console.Write(num + " "); // 输出:1 2 3 4 5 0 0 0 0 0

}

在上面的示例中,我们首先创建了一个长度为5的整数数组originalArray,并给数组赋值。然后使用Array.Resize方法将数组的长度扩展为10。最后,遍历数组并输出数组的元素,可以看到扩容后数组的后面5个元素都被初始化为0。

需要注意的是,Array.Resize方法会创建一个新的数组,并将原数组的数据复制到新数组中。因此,这种方式可能会导致一定的性能开销。

2. 使用Array.Copy方法

另一种扩容数组的方式是使用Array.Copy方法。该方法可以将原数组中的元素复制到新数组中,并可以指定复制的起始位置和长度。以下是使用Array.Copy方法进行数组扩容的示例:

int[] originalArray = new int[5] {1, 2, 3, 4, 5};

int[] newArray = new int[10];

Array.Copy(originalArray, newArray, originalArray.Length);

foreach (int num in newArray)

{

Console.Write(num + " "); // 输出:1 2 3 4 5 0 0 0 0 0

}

在上面的示例中,我们首先创建了一个长度为5的整数数组originalArray,并给数组赋值。然后创建了一个长度为10的新数组newArray。接下来,使用Array.Copy方法将originalArray中的元素复制到newArray中。最后,遍历newArray并输出数组的元素,可以看到扩容后新数组的后面5个元素被初始化为0。

3. 使用List替代数组

除了使用数组的扩容方法,C#中还可以使用List集合来替代数组。List集合是一个动态大小的数组,可以自动调整大小以容纳新元素。以下是使用List进行数组扩容的示例:

List<int> list = new List<int> {1, 2, 3, 4, 5};

list.Add(6);

foreach (int num in list)

{

Console.Write(num + " "); // 输出:1 2 3 4 5 6

}

在上面的示例中,我们首先创建了一个包含元素1到5的List集合。然后使用List的Add方法在集合末尾添加了一个新元素6。最后,遍历List集合并输出元素,可以看到新元素6被成功添加到集合中。

使用List集合进行数组操作可以方便地进行元素的增加、删除和查找等操作,并且不需要手动扩容。但是,与使用数组相比,List集合可能会产生一些性能开销。

4. 使用Linq的Concat方法

在C#中,可以使用Linq的Concat方法来合并两个数组,并返回一个新的数组。以下是使用Concat方法进行数组扩容的示例:

int[] originalArray = new int[5] {1, 2, 3, 4, 5};

int[] newArray = new int[5] {6, 7, 8, 9, 10};

int[] combinedArray = originalArray.Concat(newArray).ToArray();

foreach (int num in combinedArray)

{

Console.Write(num + " "); // 输出:1 2 3 4 5 6 7 8 9 10

}

在上面的示例中,我们首先创建了一个长度为5的整数数组originalArray,并给数组赋值。然后创建了另一个长度为5的整数数组newArray,并给数组赋值。接下来,使用Concat方法将两个数组合并,并将结果赋值给新数组combinedArray。最后,遍历combinedArray并输出数组的元素,可以看到合并后的数组包含了原数组和新数组的所有元素。

总结

本文介绍了C#中数组扩容的几种方式,包括使用Array.Resize方法、Array.Copy方法、List集合和Linq的Concat方法。根据实际需求选择合适的方式进行数组扩容,可以提高代码的可读性和性能。

需要注意的是,数组扩容可能会带来一定的性能开销,因此在处理大量数据时,应该优化扩容操作,避免对性能产生过大的影响。

后端开发标签