Прочитать на английском

Поделиться через


Array.CopyTo Метод

Определение

Копирует все элементы текущего одномерного массива в заданный одномерный массив.

Перегрузки

CopyTo(Array, Int32)

Копирует все элементы текущего одномерного массива в заданный одномерный массив начиная с указанного индекса в массиве назначения. Индекс задается как 32-битовое целое число.

CopyTo(Array, Int64)

Копирует все элементы текущего одномерного массива в заданный одномерный массив начиная с указанного индекса в массиве назначения. Индекс задается как 64-битовое целое число.

Примеры

В следующем примере кода показано, как скопировать в Array другой Array.

using System;

public class SamplesArray
{

   public static void Main()
   {

      // Creates and initializes two new Arrays.
      Array mySourceArray=Array.CreateInstance(typeof(string), 6);
      mySourceArray.SetValue("three", 0);
      mySourceArray.SetValue("napping", 1);
      mySourceArray.SetValue("cats", 2);
      mySourceArray.SetValue("in", 3);
      mySourceArray.SetValue("the", 4);
      mySourceArray.SetValue("barn", 5);
      Array myTargetArray=Array.CreateInstance(typeof(string), 15);
      myTargetArray.SetValue("The", 0);
      myTargetArray.SetValue("quick", 1);
      myTargetArray.SetValue("brown", 2);
      myTargetArray.SetValue("fox", 3);
      myTargetArray.SetValue("jumps", 4);
      myTargetArray.SetValue("over", 5);
      myTargetArray.SetValue("the", 6);
      myTargetArray.SetValue("lazy", 7);
      myTargetArray.SetValue("dog", 8);

      // Displays the values of the Array.
      Console.WriteLine("The target Array contains the following (before and after copying):");
      PrintValues(myTargetArray, ' ');

      // Copies the source Array to the target Array, starting at index 6.
      mySourceArray.CopyTo(myTargetArray, 6);

      // Displays the values of the Array.
      PrintValues(myTargetArray, ' ');
   }

   public static void PrintValues(Array myArr, char mySeparator)
   {

      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      int i = 0;
      int cols = myArr.GetLength(myArr.Rank - 1);
      while (myEnumerator.MoveNext())
      {
         if (i < cols)
         {
            i++;
         }
         else
         {
             Console.WriteLine();
             i = 1;
         }
         Console.Write("{0}{1}", mySeparator, myEnumerator.Current);
      }
      Console.WriteLine();
   }
}
/*
This code produces the following output.

The target Array contains the following (before and after copying):
 The quick brown fox jumps over the lazy dog
 The quick brown fox jumps over three napping cats in the barn
*/

В следующем примере кода показано, как скопировать объект в Array другой Array с ненулевой нижней границей. Обратите внимание, что копируется весь источник Array , включая пустые элементы, которые перезаписывают существующие элементы в целевом объекте Array.

using System;

public class SamplesArray2
{

   public static void Main()
   {
      // Creates and initializes the source Array.
      Array myArrayZero=Array.CreateInstance(typeof(string), 3);
      myArrayZero.SetValue("zero", 0);
      myArrayZero.SetValue("one", 1);

      // Displays the source Array.
      Console.WriteLine("The array with lower bound=0 contains:");
      PrintIndexAndValues(myArrayZero);

      // Creates and initializes the target Array.
      int[] myArrLen = { 4 };
      int[] myArrLow = { 2 };
      Array myArrayTwo=Array.CreateInstance(typeof(string), myArrLen, myArrLow);
      myArrayTwo.SetValue("two", 2);
      myArrayTwo.SetValue("three", 3);
      myArrayTwo.SetValue("four", 4);
      myArrayTwo.SetValue("five", 5);

      // Displays the target Array.
      Console.WriteLine("The array with lower bound=2 contains:");
      PrintIndexAndValues(myArrayTwo);

      // Copies from the array with lower bound=0 to the array with lower bound=2.
      myArrayZero.CopyTo(myArrayTwo, 3);

      // Displays the modified target Array.
      Console.WriteLine("\nAfter copying to the target array from index 3:");
      PrintIndexAndValues(myArrayTwo);
   }

   public static void PrintIndexAndValues(Array myArray)
   {
      for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++)
         Console.WriteLine("\t[{0}]:\t{1}", i, myArray.GetValue(i));
   }
}
/*
This code produces the following output.

The array with lower bound=0 contains:
    [0]:    zero
    [1]:    one
    [2]:
The array with lower bound=2 contains:
    [2]:    two
    [3]:    three
    [4]:    four
    [5]:    five

After copying to the target array from index 3:
    [2]:    two
    [3]:    zero
    [4]:    one
    [5]:
*/

CopyTo(Array, Int32)

Исходный код:
Array.cs
Исходный код:
Array.cs
Исходный код:
Array.cs

Копирует все элементы текущего одномерного массива в заданный одномерный массив начиная с указанного индекса в массиве назначения. Индекс задается как 32-битовое целое число.

public void CopyTo (Array array, int index);
public virtual void CopyTo (Array array, int index);

Параметры

array
Array

Одномерный массив, который является массивом назначения для элементов, скопированных из текущего массива.

index
Int32

32-разрядное целое число, представляющее индекс в массиве array, с которого начинается копирование.

Реализации

Исключения

array имеет значение null.

index меньше нижней границы массива array.

Массив array является многомерным.

-или-

Число элементов в исходном массиве больше доступного числа элементов от индекса index до конца массива назначения array.

Тип исходного массива Array не может быть автоматически приведен к типу массива назначения array.

Исходный массив — многомерный.

По меньшей мере один элемент в исходном массиве Array нельзя привести к типу массива назначения array.

Комментарии

Этот метод копирует все элементы текущего экземпляра массива в целевой array массив, начиная с индекса index. Целевой array массив уже должен быть измерен и иметь достаточное количество элементов для размещения скопированных элементов. В противном случае метод создает исключение.

Этот метод поддерживает System.Collections.ICollection интерфейс . Если реализация System.Collections.ICollection явно не требуется, используйте , Copy чтобы избежать дополнительного косвенного обращения.

Если этот метод вызывает исключение при копировании, состояние array не определено.

Этот метод является операцией O(n), где n имеет значение Length. Выполняется только неглубокое копирование.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

CopyTo(Array, Int64)

Исходный код:
Array.cs
Исходный код:
Array.cs
Исходный код:
Array.cs

Копирует все элементы текущего одномерного массива в заданный одномерный массив начиная с указанного индекса в массиве назначения. Индекс задается как 64-битовое целое число.

public void CopyTo (Array array, long index);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual void CopyTo (Array array, long index);
[System.Runtime.InteropServices.ComVisible(false)]
public void CopyTo (Array array, long index);

Параметры

array
Array

Одномерный массив, который является массивом назначения для элементов, скопированных из текущего массива.

index
Int64

64-разрядное целое число, представляющее индекс в массиве array, с которого начинается копирование.

Атрибуты

Исключения

array имеет значение null.

index находится вне диапазона допустимых индексов для array.

Массив array является многомерным.

-или-

Число элементов в исходном массиве больше доступного числа элементов от индекса index до конца массива назначения array.

Тип исходного массива Array не может быть автоматически приведен к типу массива назначения array.

Исходный массив Array — многомерный.

По меньшей мере один элемент в исходном массиве Array нельзя привести к типу массива назначения array.

Комментарии

Этот метод копирует все элементы текущего экземпляра массива в целевой array массив, начиная с индекса index. Целевой array массив уже должен быть измерен и иметь достаточное количество элементов для размещения скопированных элементов. В противном случае метод создает исключение.

Этот метод поддерживает System.Collections.ICollection интерфейс . Если реализация System.Collections.ICollection явно не требуется, используйте , Copy чтобы избежать дополнительного косвенного обращения.

Если этот метод вызывает исключение при копировании, состояние array не определено.

Этот метод является операцией O(n), где n имеет значение Length. Выполняется только неглубокое копирование.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1