C# 拷贝数组的几种方法(总结)
更新时间:2023-08-13前言
在C#中拷贝数组是一个常见的操作,它允许我们从一个数组创建一个新的数组,并且在不修改原始数组的情况下进行操作。本文将总结几种常见的拷贝数组的方法,并提供相应的代码示例。我们将讨论使用Array.Copy()、Array.Clone()和LINQ等方法来实现数组拷贝。
使用Array.Copy()
Array.Copy()方法是一个高效的拷贝数组的方式。它需要三个参数,分别是源数组、目标数组和要拷贝的元素数量。只要保证目标数组的大小足够容纳要拷贝的元素,就可以使用这个方法来进行数组拷贝。
int[] sourceArray = { 1, 2, 3, 4, 5 }; int[] targetArray = new int[sourceArray.Length]; Array.Copy(sourceArray, targetArray, sourceArray.Length);
上面的示例代码中,我们使用Array.Copy()方法将sourceArray数组完整地拷贝到了targetArray数组中。注意,Array.Copy()是一个浅拷贝,如果源数组是一个引用类型的数组,那么目标数组中的元素将指向同一块内存地址。
使用Array.Clone()
Array.Clone()方法也是一个常见的拷贝数组的方式。它创建了一个源数组的副本,并返回该副本。与Array.Copy()不同的是,Array.Clone()是一个深拷贝,所以副本数组中的元素和源数组中的元素是完全独立的。
int[] sourceArray = { 1, 2, 3, 4, 5 }; int[] clonedArray = (int[])sourceArray.Clone();
上面的示例代码中,我们使用Array.Clone()方法创建了sourceArray的副本,并将其赋值给了clonedArray。现在,sourceArray和clonedArray是独立的数组,对其中一个数组进行修改不会影响到另一个数组。
使用LINQ
除了上述两种方法,我们还可以使用LINQ来拷贝数组。LINQ提供了非常方便的方式来进行数组的查询和操作。为了拷贝一个数组,我们可以使用ToArray()方法将源数组转换为一个新的数组。
int[] sourceArray = { 1, 2, 3, 4, 5 }; int[] copiedArray = sourceArray.ToArray();
上面的示例代码中,我们使用ToArray()方法将sourceArray转换为一个新的数组copiedArray。此时,copiedArray中的元素与sourceArray中的元素相同,但是它们是完全独立的。
总结
本文总结了C#中拷贝数组的几种常见方法。使用Array.Copy()方法可以高效地拷贝数组,但注意它是一个浅拷贝。Array.Clone()方法创建的是一个深拷贝,对副本数组的修改不会影响到源数组。此外,我们还介绍了使用LINQ的方式来拷贝数组,通过ToArray()方法可以将源数组转换为一个新的数组。根据实际需求选择适合的方法来拷贝数组,以提高代码的可读性和性能。