Метод (array, int32, array, int32, int32) (system)

sourceArray І destinationArray параметри повинні мати однакове число вимірювань. Крім того destinationArray повинен вже був визначений і повинен мати достатню кількість елементів, починаючи з destinationIndex позицію для розміщення всіх скопійованих даних.

Якщо sourceArray і destinationArray перекриваються, цей метод веде себе як якщо б вихідні значення sourceArray були збережені в тимчасовому розташуванні перед destinationArray перезаписується.

Цей метод еквівалентний стандартної функції C / C ++ memmove. а не memcpy.

Масиви можуть мати контрольний тип або тип значення. Виконується приведення типів, при необхідності.

При копіюванні з масиву посилального типу значення кожного елемента Розпаковано, а потім копіюється. При копіюванні з масиву типу значення посилального типу кожен елемент упаковка-перетворення, а потім копіюється.

При копіюванні з масиву посилального типу або типу значення в Object масиву, Object створюється для зберігання кожного значення або посилання, а потім копіюються. При копіюванні з Object неможлива посилальним типом або типом значення масиву і призначення масиву InvalidCastException виникає виняток.

Якщо sourceArray і destinationArray обидва масиви посилального типу або обидва масиви типу Object. виконується Неповна копія. Неповна копія Array - це нова Array містить посилання на ті ж елементи, що і вихідний Array. Елементи самостійно або будь-якому посилаються елементи, що не копіюються. Навпаки, глибока копія об'єкта Array копіює елементи і все, що прямо або побічно посилаються елементи.

ArrayTypeMismatchException Створюється, якщо масиви мають несумісні типи. Сумісність типів визначається наступним чином:

Тип не є сумісну з самим собою.

Тип значення сумісний з Object і з типом інтерфейсу, реалізований цим типом значення. Тип значення, вважається підключений до інтерфейсу тільки в тому випадку, якщо він реалізує даний інтерфейс безпосередньо. Відключені типи несумісні.

Два вбудованих (зумовлених) типу значень є сумісними, якщо процес копіювання з вихідного типу в кінцевий тип являє розширює перетворення. Розширює перетворення ніколи не призводить до втрати інформації, в той час як звужує перетворення може призвести до втрати інформації. Наприклад перетворення 32-розрядний ціле число зі знаком в 64-розрядне знакове ціле число є розширює перетворення, і перетворення 64-розрядного цілого числа зі знаком в 32-розрядне знакове ціле число є звужує перетворенням. Додаткові відомості про перетвореннях см. В розділі Convert.

Тип значення вбудованим (призначена для користувача) сумісний тільки з самим собою.

Перерахування підтримують неявне перетворення до Enum і до свого базового типу.

Якщо кожен елемент масиву sourceArray вимагає приведення (наприклад, з базового класу в похідний клас або з інтерфейсу на об'єкт) і один або кілька елементів не може бути перетворений в відповідний тип в destinationArray. InvalidCastException виникає виняток.

Якщо цей метод викликає виключення при копіюванні стан destinationArray не визначене.

Цей метод є операцією O (n) операції, де n - length.