C# CopyTo(T[],Int32):从特定的 ICollection索引开始,将元素复制到数组中

  • Post category:C#

C# 语言中,CopyTo(T[],Int32) 是一个数组扩展方法,用于在指定起始索引位置将当前数组的每个元素复制到另一个目标数组中。在本文中,我们将详细讲解 CopyTo(T[],Int32) 方法的使用方法、返回值、示例以及注意事项。

使用方法

CopyTo(T[],Int32) 方法是一个扩展方法,可通过数组对象调用。其完整用法如下所示:

public static void CopyTo<T> (this T[] array, T[] destinationArray, int destinationIndex);

其中,array 表示要将元素复制到目标数组的当前数组;destinationArray 是要复制到的目标数组;destinationIndex 则是从目标数组的哪个索引位置开始复制元素。

返回值

CopyTo(T[],Int32) 方法没有返回值,因为它直接修改了目标数组的内容。

示例

以下是两个示例,展示了 CopyTo(T[],Int32) 方法的使用方法和输出结果。

  1. 复制数组的一部分到另一个数组:
int[] sourceArray = {1, 2, 3, 4, 5};
int[] destinationArray = new int[3];
int startIndex = 1;

sourceArray.CopyTo(destinationArray, startIndex);

Console.WriteLine(string.Join(", ", destinationArray));
// 输出:2, 3, 4

在该示例中,我们先定义了一个起始索引位置为 1 的数组 sourceArray,然后创建一个长度为 3destinationArray,并将 sourceArray 的第二个元素开始复制到 destinationArray 中。由于 destinationArray 的长度为 3,因此只会复制 sourceArray 的前三个元素。

  1. List<string> 类型的数据复制到 string[] 类型的数组中:
List<string> myList = new List<string>{"red", "green", "blue"};
string[] myArray = new string[myList.Count];

myList.CopyTo(myArray, 0);

foreach(string item in myArray)
{
    Console.WriteLine(item);
}
// 输出:red, green, blue

在该示例中,我们创建了一个包含三个字符串元素的列表 myList,然后创建一个长度为 3string 类型数组 myArray,并将 myList 中的元素全部复制到 myArray。最终,我们使用 foreach 循环遍历 myArray 中的元素,并输出到控制台中。

注意事项

在使用 CopyTo(T[],Int32) 方法时,需要注意以下几点:

  • 目标数组 destinationArray 必须是已经实例化且具有足够的空间来容纳要复制的元素。
  • 复制过程中必须保证目标数组的每个元素类型与源数组元素类型相同,否则将导致编译错误。
  • startIndex 大于或等于当前数组 array 的长度(即,startIndex >= array.Length)时,将抛出 System.ArgumentOutOfRangeException 异常。