C# CopyTo(Array,Int32):从特定的索引开始将集合的元素复制到数组中

  • Post category:C#

C#中的CopyTo(Array,Int32)方法是用于将调用该方法的集合的元素复制到指定的一维数组中的指定索引位置开始处。该方法被重载了多个版本,其中一个版本的定义如下:

public void CopyTo(Array array, int index);

该方法具有以下两个参数:

  • array:要复制到其中的一维数组。
  • index:复制开始的从0开始的索引。

下面是示例代码,说明如何使用CopyTo方法复制集合中的元素到一个数组中。

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        ArrayList words = new ArrayList { "C#", "Java", "Javascript" };
        string[] dest = new string[3];

        // 将数组元素从索引为0的位置开始复制到目标数组中
        words.CopyTo(dest, 0);

        // 打印目标数组中的内容
        foreach (string s in dest)
        {
            Console.WriteLine(s);
        }
    }
}

上面的代码创建了一个名为words的ArrayList,其中包含三个字符串。然后它创建了一个名为dest的长度为3的字符串数组,使用CopyTo方法将ArrayList中的元素复制到该数组中的索引0位置开始。

如果目标数组的长度小于源集合中的元素数量,CopyTo方法则会引发异常。下面的代码演示了这种情况:

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        ArrayList words = new ArrayList { "C#", "Java", "Javascript" };
        string[] dest = new string[2];

        // 抛出异常,目标数组长度不足
        words.CopyTo(dest, 0); 
    }
}

上述代码尝试将ArrayList中的元素复制到长度为2的dest数组中,但是源集合中的元素数量为3,因此CopyTo方法会引发异常。