Array.Copy Array.Copy Array.Copy Array.Copy Method

정의

Array의 요소 범위를 다른 Array에 복사하고 필요에 따라 형식 캐스팅 및 boxing을 수행합니다.Copies a range of elements in one Array to another Array and performs type casting and boxing as required.

오버로드

Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64)

Array의 요소 범위를 지정한 소스 인덱스부터 복사하여 지정된 대상 인덱스부터 시작하는 다른 Array에 붙여 넣습니다.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. 길이와 인덱스가 64비트 정수로 지정되어 있습니다.The length and the indexes are specified as 64-bit integers.

Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32)

Array의 요소 범위를 지정한 소스 인덱스부터 복사하여 지정된 대상 인덱스부터 시작하는 다른 Array에 붙여 넣습니다.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. 길이와 인덱스가 32비트 정수로 지정되어 있습니다.The length and the indexes are specified as 32-bit integers.

Copy(Array, Array, Int64) Copy(Array, Array, Int64) Copy(Array, Array, Int64) Copy(Array, Array, Int64)

Array의 요소 범위를 첫 번째 요소부터 복사하여 다른 Array에 첫 번째 요소부터 붙여넣습니다.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. 길이가 64비트 정수로 지정되어 있습니다.The length is specified as a 64-bit integer.

Copy(Array, Array, Int32) Copy(Array, Array, Int32) Copy(Array, Array, Int32) Copy(Array, Array, Int32)

Array의 요소 범위를 첫 번째 요소부터 복사하여 다른 Array에 첫 번째 요소부터 붙여넣습니다.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. 길이가 32비트 정수로 지정되어 있습니다.The length is specified as a 32-bit integer.

Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64) Copy(Array, Int64, Array, Int64, Int64)

Array의 요소 범위를 지정한 소스 인덱스부터 복사하여 지정된 대상 인덱스부터 시작하는 다른 Array에 붙여 넣습니다.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. 길이와 인덱스가 64비트 정수로 지정되어 있습니다.The length and the indexes are specified as 64-bit integers.

public:
 static void Copy(Array ^ sourceArray, long sourceIndex, Array ^ destinationArray, long destinationIndex, long length);
public static void Copy (Array sourceArray, long sourceIndex, Array destinationArray, long destinationIndex, long length);
static member Copy : Array * int64 * Array * int64 * int64 -> unit
Public Shared Sub Copy (sourceArray As Array, sourceIndex As Long, destinationArray As Array, destinationIndex As Long, length As Long)

매개 변수

sourceArray
Array Array Array Array

복사할 데이터가 포함된 Array입니다.The Array that contains the data to copy.

sourceIndex
Int64 Int64 Int64 Int64

복사가 시작되는 sourceArray의 인덱스를 나타내는 64비트 정수입니다.A 64-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array Array Array Array

데이터를 받는 Array입니다.The Array that receives the data.

destinationIndex
Int64 Int64 Int64 Int64

저장이 시작되는 destinationArray의 인덱스를 나타내는 64비트 정수입니다.A 64-bit integer that represents the index in the destinationArray at which storing begins.

length
Int64 Int64 Int64 Int64

복사할 요소의 개수를 나타내는 64비트 정수입니다.A 64-bit integer that represents the number of elements to copy. 정수는 0과 MaxValue(포함) 사이여야 합니다.The integer must be between zero and MaxValue, inclusive.

예외

sourceArraynull인 경우sourceArray is null.

또는-or- destinationArraynull인 경우destinationArray is null.

sourceArraydestinationArray의 차수가 다릅니다.sourceArray and destinationArray have different ranks.

sourceArraydestinationArray는 호환되지 않는 형식입니다.sourceArray and destinationArray are of incompatible types.

sourceArray의 하나 이상의 요소를 destinationArray의 형식으로 캐스팅할 수 없습니다.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndexsourceArray의 유효한 인덱스 범위를 벗어납니다.sourceIndex is outside the range of valid indexes for the sourceArray.

또는-or- destinationIndexdestinationArray의 유효한 인덱스 범위를 벗어납니다.destinationIndex is outside the range of valid indexes for the destinationArray.

또는-or- length가 0보다 작거나 MaxValue보다 큽니다.length is less than 0 or greater than MaxValue.

lengthsourceIndex부터 sourceArray 끝까지의 요소 수보다 큽니다.length is greater than the number of elements from sourceIndex to the end of sourceArray.

또는-or- lengthdestinationIndex부터 destinationArray 끝까지의 요소 수보다 큽니다.length is greater than the number of elements from destinationIndex to the end of destinationArray.

예제

다음 코드 예제에서는 간에 복사 하는 방법을 보여 줍니다 Array 형식의 ObjectArray 형식 정수.The following code example shows how to copy from one Array of type Object to another Array of type integer.

using namespace System;
void PrintValues( Array^ myArr );
void main()
{
   
   // Creates and initializes a new Array instance of type Int32.
   Array^ myIntArray = Array::CreateInstance( Type::GetType(  "System.Int32" ), 5 );
   for ( int i = myIntArray->GetLowerBound( 0 ); i <= myIntArray->GetUpperBound( 0 ); i++ )
      myIntArray->SetValue( i + 1, i );
   
   // Creates and initializes a new Array instance of type Object.
   Array^ myObjArray = Array::CreateInstance( Type::GetType(  "System.Object" ), 5 );
   for ( int i = myObjArray->GetLowerBound( 0 ); i <= myObjArray->GetUpperBound( 0 ); i++ )
      myObjArray->SetValue( i + 26, i );
   
   // Displays the initial values of both arrays.
   Console::WriteLine(  "Int32 array:" );
   PrintValues( myIntArray );
   Console::WriteLine(  "Object array:" );
   PrintValues( myObjArray );
   
   // Copies the first element from the Int32 array to the Object array.
   Array::Copy( myIntArray, myIntArray->GetLowerBound( 0 ), myObjArray, myObjArray->GetLowerBound( 0 ), 1 );
   
   // Copies the last two elements from the Object array to the Int32 array.
   Array::Copy( myObjArray, myObjArray->GetUpperBound( 0 ) - 1, myIntArray, myIntArray->GetUpperBound( 0 ) - 1, 2 );
   
   // Displays the values of the modified arrays.
   Console::WriteLine(  "Int32 array - Last two elements should now be the same as Object array:" );
   PrintValues( myIntArray );
   Console::WriteLine(  "Object array - First element should now be the same as Int32 array:" );
   PrintValues( myObjArray );
}

void PrintValues( Array^ myArr )
{
   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(  "\t{0}", myEnumerator->Current );
   }

   Console::WriteLine();
}

/*
 This code produces the following output.
 
 Int32 array:
     1    2    3    4    5
 Object array:
     26    27    28    29    30
 Int32 array - Last two elements should now be the same as Object array:
     1    2    3    29    30
 Object array - First element should now be the same as Int32 array:
     1    27    28    29    30
 */
using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new Array of type Int32.
      Array myIntArray=Array.CreateInstance( typeof(System.Int32), 5 );
      for ( int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )
         myIntArray.SetValue( i+1, i );

      // Creates and initializes a new Array of type Object.
      Array myObjArray = Array.CreateInstance( typeof(System.Object), 5 );
      for ( int i = myObjArray.GetLowerBound(0); i <= myObjArray.GetUpperBound(0); i++ )
         myObjArray.SetValue( i+26, i );

      // Displays the initial values of both arrays.
      Console.WriteLine( "Int32 array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array:" );
      PrintValues( myObjArray );

      // Copies the first element from the Int32 array to the Object array.
      Array.Copy( myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1 );

      // Copies the last two elements from the Object array to the Int32 array.
      Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );

      // Displays the values of the modified arrays.
      Console.WriteLine( "Int32 array - Last two elements should now be the same as Object array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array - First element should now be the same as Int32 array:" );
      PrintValues( myObjArray );
   }


   public static void PrintValues( Array myArr )  {
      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( "\t{0}", myEnumerator.Current );
      }
      Console.WriteLine();
   }
}
/*
This code produces the following output.

Int32 array:
    1    2    3    4    5
Object array:
    26    27    28    29    30
Int32 array - Last two elements should now be the same as Object array:
    1    2    3    29    30
Object array - First element should now be the same as Int32 array:
    1    27    28    29    30
*/
Imports System
Imports Microsoft.VisualBasic

Public Class SamplesArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new Array of type Int32.
        Dim myIntArray As Array = _
           Array.CreateInstance(GetType(System.Int32), 5)
        Dim i As Integer
        For i = myIntArray.GetLowerBound(0) To myIntArray.GetUpperBound(0)
            myIntArray.SetValue(i + 1, i)
        Next i 
        ' Creates and initializes a new Array of type Object.
        Dim myObjArray As Array = _
           Array.CreateInstance(GetType(System.Object), 5)
        For i = myObjArray.GetLowerBound(0) To myObjArray.GetUpperBound(0)
            myObjArray.SetValue(i + 26, i)
        Next i 
        ' Displays the initial values of both arrays.
        Console.WriteLine("Int32 array:")
        PrintValues(myIntArray)
        Console.WriteLine("Object array:")
        PrintValues(myObjArray)
        
        ' Copies the first element from the Int32 array to the Object array.
        Array.Copy(myIntArray, myIntArray.GetLowerBound(0), myObjArray, _
           myObjArray.GetLowerBound(0), 1)
        
        ' Copies the last two elements from the Object array to the Int32 array.
        Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, _
           myIntArray.GetUpperBound(0) - 1, 2)
        
        ' Displays the values of the modified arrays.
        Console.WriteLine("Int32 array - Last two elements should now be " _
           + "the same as Object array:")
        PrintValues(myIntArray)
        Console.WriteLine("Object array - First element should now be the " _
           + "same as Int32 array:")
        PrintValues(myObjArray)
    End Sub
    
    Public Shared Sub PrintValues(myArr As Array)
        Dim myEnumerator As System.Collections.IEnumerator = _
           myArr.GetEnumerator()
        Dim i As Integer = 0
        Dim cols As Integer = myArr.GetLength((myArr.Rank - 1))
        While myEnumerator.MoveNext()
            If i < cols Then
                i += 1
            Else
                Console.WriteLine()
                i = 1
            End If
            Console.Write(ControlChars.Tab + "{0}", myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' Int32 array:
'     1    2    3    4    5
' Object array:
'     26    27    28    29    30
' Int32 array - Last two elements should now be the same as Object array:
'     1    2    3    29    30
' Object array - First element should now be the same as Int32 array:
'     1    27    28    29    30

설명

합니다 sourceArraydestinationArray 매개 변수 같은 차원 수 있어야 합니다.The sourceArray and destinationArray parameters must have the same number of dimensions. 또한 destinationArray 해야 이미 있는 된 차원이 고에서 시작 하는 요소의 충분 한 수 있어야 합니다.는 destinationIndex 복사한 데이터를 수용 하기 위해 위치입니다.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements starting from the destinationIndex position to accommodate the copied data.

다차원 배열 간에 복사 하는 경우 배열 처럼 동작 하며 긴 1 차원 배열에 행 (또는 열)은 개념적으로 놓여집니다 엔드-투-엔드.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end-to-end. 예를 들어, 배열에 세 개의 행 (또는 열) 4 개 요소를 사용 하 여 각각 복사 6 개의 요소가 있으면 배열의 시작 부분에서 첫 번째 행 (또는 열)의 모든 4 개의 요소가 및 두 번째 행 (또는 열)의 처음 두 요소 복사 됩니다.For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column). 세 번째 행 (또는 열의), 두 번째 요소에서 복사를 시작할 sourceIndex 첫 번째 행 (또는 열의) 상한 값 2를 더한의 두 번째 행 (또는 열의) 길이 더한 값 이어야 합니다.To start copying from the second element of the third row (or column), sourceIndex must be the upper bound of the first row (or column) plus the length of the second row (or column) plus two.

경우 sourceArray 하 고 destinationArray 겹치는 경우이 메서드 동작 처럼의 원래 값 sourceArray 하기 전에 임시 위치에 유지 된 destinationArray 를 덮어씁니다.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

이 메서드는 표준 C + + 함수에 해당 memmove이 아니라 memcpy합니다.This method is equivalent to the standard C/C++ function memmove, not memcpy.

배열은 참조 형식 배열 또는 값 형식 배열 수 있습니다.The arrays can be reference-type arrays or value-type arrays. 형식 다운 캐스팅을 수행 해야 하는 경우.Type downcasting is performed, as required.

  • 참조 형식 배열에서 값 형식 배열에 복사할 때 각 요소는 unboxed 하 고 복사 됩니다.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. 값 형식 배열에서 참조 형식 배열에 복사할 때 각 요소 boxed 이며 그런 다음 복사 됩니다.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • 에 참조 형식 또는 값 형식 배열에서 복사 하는 경우는 Object 배열에는 Object 각 값 또는 참조를 저장 하기 위해 만들어지는 이며 그런 다음 복사 합니다.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. 복사 하는 경우는 Object 배열을 참조 형식 또는 값 형식 배열 및 할당 가능 하지는 InvalidCastException throw 됩니다.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • 경우 sourceArray 하 고 destinationArray 는 모두 참조 형식 배열 또는 형식의 배열은 모두 Object, 단순 복사가 수행 됩니다.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. 단순 복사본을 Array 새로운 Array 원본과 동일한 요소에 대 한 참조를 포함 하 Array합니다.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. 요소는 요소에서 참조 하는 대상은 복사 되지 않습니다.The elements themselves or anything referenced by the elements are not copied. 전체 복사본 하는 반면,는 Array 요소 및 요소에 의해 직접 또는 간접적으로 참조 된 모든 항목을 복사 합니다.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

ArrayTypeMismatchException 배열은 호환 되지 않는 형식의 경우 throw 됩니다.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. 형식 호환성은 다음과 같이 정의 됩니다.Type compatibility is defined as follows:

  • 형식은 자체와 호환 됩니다.A type is compatible with itself.

  • 값 형식은 호환 Object 와 해당 값 형식에서 구현 된 인터페이스 형식입니다.A value type is compatible with Object and with an interface type implemented by that value type. 값 형식 인터페이스를 해당 인터페이스를 직접 구현 하는 경우에 연결할 것으로 간주 됩니다.A value type is considered connected to an interface only if it implements that interface directly. 연결이 끊긴된 형식이 호환 되지 않습니다.Disconnected types are not compatible.

  • 내장 (미리 정의 된) 값 유형은 두 확대 변환이 대상 형식이 소스 형식에서 복사 하는 경우 호환입니다.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. 확대 변환 되지 축소 변환에는 정보 손실 될 수 있지만 내용은 손실 됩니다.A widening conversion never loses information, whereas a narrowing conversion can lose information. 예를 들어, 64 비트 부호 있는 정수를 부호 있는 32 비트 정수를 변환할 확대 변환 이며 64 비트 부호 있는 정수는 32 비트 부호 있는 정수로 변환 축소 변환 합니다.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. 변환에 대 한 자세한 내용은 참조 하세요. Convert합니다.For more information about conversions, see Convert.

  • 비 내장 (사용자 정의 됨) 값 형식은 변수와만 호환입니다.A nonintrinsic (user-defined) value type is compatible only with itself.

  • 열거형으로 암시적 변환이 있는 Enum 및 해당 기본 형식입니다.Enumerations have an implicit conversion to Enum and to their underlying type.

경우에 있는 모든 요소가 sourceArray 필요 다운 캐스팅 (예를 들어 파생된 된 클래스에 기본 클래스 또는 개체에 대 한 인터페이스) 및 하나 이상의 요소에 해당 형식으로 캐스팅할 수 없습니다 destinationArray, InvalidCastException throw 됩니다.If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

이 메서드는 상태를 복사 하는 동안 예외를 throw 하는 경우 destinationArray 정의 되지 않습니다.If this method throws an exception while copying, the state of destinationArray is undefined.

이 메서드는 O (n) 작업, 여기서 nlength합니다.This method is an O(n) operation, where n is length.

추가 정보

Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32) Copy(Array, Int32, Array, Int32, Int32)

Array의 요소 범위를 지정한 소스 인덱스부터 복사하여 지정된 대상 인덱스부터 시작하는 다른 Array에 붙여 넣습니다.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. 길이와 인덱스가 32비트 정수로 지정되어 있습니다.The length and the indexes are specified as 32-bit integers.

public:
 static void Copy(Array ^ sourceArray, int sourceIndex, Array ^ destinationArray, int destinationIndex, int length);
public static void Copy (Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
static member Copy : Array * int * Array * int * int -> unit
Public Shared Sub Copy (sourceArray As Array, sourceIndex As Integer, destinationArray As Array, destinationIndex As Integer, length As Integer)

매개 변수

sourceArray
Array Array Array Array

복사할 데이터가 포함된 Array입니다.The Array that contains the data to copy.

sourceIndex
Int32 Int32 Int32 Int32

복사가 시작되는 sourceArray의 인덱스를 나타내는 32비트 정수입니다.A 32-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array Array Array Array

데이터를 받는 Array입니다.The Array that receives the data.

destinationIndex
Int32 Int32 Int32 Int32

저장이 시작되는 destinationArray의 인덱스를 나타내는 32비트 정수입니다.A 32-bit integer that represents the index in the destinationArray at which storing begins.

length
Int32 Int32 Int32 Int32

복사할 요소의 개수를 나타내는 32비트 정수입니다.A 32-bit integer that represents the number of elements to copy.

예외

sourceArraynull인 경우sourceArray is null.

또는-or- destinationArraynull인 경우destinationArray is null.

sourceArraydestinationArray의 차수가 다릅니다.sourceArray and destinationArray have different ranks.

sourceArraydestinationArray는 호환되지 않는 형식입니다.sourceArray and destinationArray are of incompatible types.

sourceArray의 하나 이상의 요소를 destinationArray의 형식으로 캐스팅할 수 없습니다.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndexsourceArray의 첫 번째 차원 하한값보다 작습니다.sourceIndex is less than the lower bound of the first dimension of sourceArray.

또는-or- destinationIndexdestinationArray의 첫 번째 차원 하한값보다 작습니다.destinationIndex is less than the lower bound of the first dimension of destinationArray.

또는-or- length가 0보다 작은 경우length is less than zero.

lengthsourceIndex부터 sourceArray 끝까지의 요소 수보다 큽니다.length is greater than the number of elements from sourceIndex to the end of sourceArray.

또는-or- lengthdestinationIndex부터 destinationArray 끝까지의 요소 수보다 큽니다.length is greater than the number of elements from destinationIndex to the end of destinationArray.

예제

다음 코드 예제에서는 간에 복사 하는 방법을 보여 줍니다 Array 형식의 ObjectArray 형식 정수.The following code example shows how to copy from one Array of type Object to another Array of type integer.

using namespace System;
void PrintValues( Array^ myArr );
void main()
{
   
   // Creates and initializes a new Array instance of type Int32.
   Array^ myIntArray = Array::CreateInstance( Type::GetType(  "System.Int32" ), 5 );
   for ( int i = myIntArray->GetLowerBound( 0 ); i <= myIntArray->GetUpperBound( 0 ); i++ )
      myIntArray->SetValue( i + 1, i );
   
   // Creates and initializes a new Array instance of type Object.
   Array^ myObjArray = Array::CreateInstance( Type::GetType(  "System.Object" ), 5 );
   for ( int i = myObjArray->GetLowerBound( 0 ); i <= myObjArray->GetUpperBound( 0 ); i++ )
      myObjArray->SetValue( i + 26, i );
   
   // Displays the initial values of both arrays.
   Console::WriteLine(  "Int32 array:" );
   PrintValues( myIntArray );
   Console::WriteLine(  "Object array:" );
   PrintValues( myObjArray );
   
   // Copies the first element from the Int32 array to the Object array.
   Array::Copy( myIntArray, myIntArray->GetLowerBound( 0 ), myObjArray, myObjArray->GetLowerBound( 0 ), 1 );
   
   // Copies the last two elements from the Object array to the Int32 array.
   Array::Copy( myObjArray, myObjArray->GetUpperBound( 0 ) - 1, myIntArray, myIntArray->GetUpperBound( 0 ) - 1, 2 );
   
   // Displays the values of the modified arrays.
   Console::WriteLine(  "Int32 array - Last two elements should now be the same as Object array:" );
   PrintValues( myIntArray );
   Console::WriteLine(  "Object array - First element should now be the same as Int32 array:" );
   PrintValues( myObjArray );
}

void PrintValues( Array^ myArr )
{
   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(  "\t{0}", myEnumerator->Current );
   }

   Console::WriteLine();
}

/*
 This code produces the following output.
 
 Int32 array:
     1    2    3    4    5
 Object array:
     26    27    28    29    30
 Int32 array - Last two elements should now be the same as Object array:
     1    2    3    29    30
 Object array - First element should now be the same as Int32 array:
     1    27    28    29    30
 */
using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new Array of type Int32.
      Array myIntArray=Array.CreateInstance( typeof(System.Int32), 5 );
      for ( int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )
         myIntArray.SetValue( i+1, i );

      // Creates and initializes a new Array of type Object.
      Array myObjArray = Array.CreateInstance( typeof(System.Object), 5 );
      for ( int i = myObjArray.GetLowerBound(0); i <= myObjArray.GetUpperBound(0); i++ )
         myObjArray.SetValue( i+26, i );

      // Displays the initial values of both arrays.
      Console.WriteLine( "Int32 array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array:" );
      PrintValues( myObjArray );

      // Copies the first element from the Int32 array to the Object array.
      Array.Copy( myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1 );

      // Copies the last two elements from the Object array to the Int32 array.
      Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );

      // Displays the values of the modified arrays.
      Console.WriteLine( "Int32 array - Last two elements should now be the same as Object array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array - First element should now be the same as Int32 array:" );
      PrintValues( myObjArray );
   }


   public static void PrintValues( Array myArr )  {
      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( "\t{0}", myEnumerator.Current );
      }
      Console.WriteLine();
   }
}
/*
This code produces the following output.

Int32 array:
    1    2    3    4    5
Object array:
    26    27    28    29    30
Int32 array - Last two elements should now be the same as Object array:
    1    2    3    29    30
Object array - First element should now be the same as Int32 array:
    1    27    28    29    30
*/
Imports System
Imports Microsoft.VisualBasic

Public Class SamplesArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new Array of type Int32.
        Dim myIntArray As Array = _
           Array.CreateInstance(GetType(System.Int32), 5)
        Dim i As Integer
        For i = myIntArray.GetLowerBound(0) To myIntArray.GetUpperBound(0)
            myIntArray.SetValue(i + 1, i)
        Next i 
        ' Creates and initializes a new Array of type Object.
        Dim myObjArray As Array = _
           Array.CreateInstance(GetType(System.Object), 5)
        For i = myObjArray.GetLowerBound(0) To myObjArray.GetUpperBound(0)
            myObjArray.SetValue(i + 26, i)
        Next i 
        ' Displays the initial values of both arrays.
        Console.WriteLine("Int32 array:")
        PrintValues(myIntArray)
        Console.WriteLine("Object array:")
        PrintValues(myObjArray)
        
        ' Copies the first element from the Int32 array to the Object array.
        Array.Copy(myIntArray, myIntArray.GetLowerBound(0), myObjArray, _
           myObjArray.GetLowerBound(0), 1)
        
        ' Copies the last two elements from the Object array to the Int32 array.
        Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, _
           myIntArray.GetUpperBound(0) - 1, 2)
        
        ' Displays the values of the modified arrays.
        Console.WriteLine("Int32 array - Last two elements should now be " _
           + "the same as Object array:")
        PrintValues(myIntArray)
        Console.WriteLine("Object array - First element should now be the " _
           + "same as Int32 array:")
        PrintValues(myObjArray)
    End Sub
    
    Public Shared Sub PrintValues(myArr As Array)
        Dim myEnumerator As System.Collections.IEnumerator = _
           myArr.GetEnumerator()
        Dim i As Integer = 0
        Dim cols As Integer = myArr.GetLength((myArr.Rank - 1))
        While myEnumerator.MoveNext()
            If i < cols Then
                i += 1
            Else
                Console.WriteLine()
                i = 1
            End If
            Console.Write(ControlChars.Tab + "{0}", myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' Int32 array:
'     1    2    3    4    5
' Object array:
'     26    27    28    29    30
' Int32 array - Last two elements should now be the same as Object array:
'     1    2    3    29    30
' Object array - First element should now be the same as Int32 array:
'     1    27    28    29    30

설명

합니다 sourceArraydestinationArray 매개 변수 같은 차원 수 있어야 합니다.The sourceArray and destinationArray parameters must have the same number of dimensions. 또한 destinationArray 해야 이미 있는 된 차원이 고에서 시작 하는 요소의 충분 한 수 있어야 합니다.는 destinationIndex 복사한 데이터를 수용 하기 위해 위치입니다.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements starting from the destinationIndex position to accommodate the copied data.

다차원 배열 간에 복사 하는 경우 배열 처럼 동작 하며 긴 1 차원 배열에 행 (또는 열)은 개념적으로 놓여집니다 엔드-투-엔드.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end-to-end. 예를 들어, 배열에 세 개의 행 (또는 열) 4 개 요소를 사용 하 여 각각 복사 6 개의 요소가 있으면 배열의 시작 부분에서 첫 번째 행 (또는 열)의 모든 4 개의 요소가 및 두 번째 행 (또는 열)의 처음 두 요소 복사 됩니다.For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column). 세 번째 행 (또는 열의), 두 번째 요소에서 복사를 시작할 sourceIndex 첫 번째 행 (또는 열의) 상한 값 2를 더한의 두 번째 행 (또는 열의) 길이 더한 값 이어야 합니다.To start copying from the second element of the third row (or column), sourceIndex must be the upper bound of the first row (or column) plus the length of the second row (or column) plus two.

경우 sourceArray 하 고 destinationArray 겹치는 경우이 메서드 동작 처럼의 원래 값 sourceArray 하기 전에 임시 위치에 유지 된 destinationArray 를 덮어씁니다.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

이 메서드는 표준 C + + 함수에 해당 memmove이 아니라 memcpy합니다.This method is equivalent to the standard C/C++ function memmove, not memcpy.

배열은 참조 형식 배열 또는 값 형식 배열 수 있습니다.The arrays can be reference-type arrays or value-type arrays. 형식 다운 캐스팅을 수행 해야 하는 경우.Type downcasting is performed, as required.

  • 참조 형식 배열에서 값 형식 배열에 복사할 때 각 요소는 unboxed 하 고 복사 됩니다.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. 값 형식 배열에서 참조 형식 배열에 복사할 때 각 요소 boxed 이며 그런 다음 복사 됩니다.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • 에 참조 형식 또는 값 형식 배열에서 복사 하는 경우는 Object 배열에는 Object 각 값 또는 참조를 저장 하기 위해 만들어지는 이며 그런 다음 복사 합니다.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. 복사 하는 경우는 Object 배열을 참조 형식 또는 값 형식 배열 및 할당 가능 하지는 InvalidCastException throw 됩니다.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • 경우 sourceArray 하 고 destinationArray 는 모두 참조 형식 배열 또는 형식의 배열은 모두 Object, 단순 복사가 수행 됩니다.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. 단순 복사본을 Array 새로운 Array 원본과 동일한 요소에 대 한 참조를 포함 하 Array합니다.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. 요소는 요소에서 참조 하는 대상은 복사 되지 않습니다.The elements themselves or anything referenced by the elements are not copied. 전체 복사본 하는 반면,는 Array 요소 및 요소에 의해 직접 또는 간접적으로 참조 된 모든 항목을 복사 합니다.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

ArrayTypeMismatchException 배열은 호환 되지 않는 형식의 경우 throw 됩니다.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. 형식 호환성은 다음과 같이 정의 됩니다.Type compatibility is defined as follows:

  • 형식은 자체와 호환 됩니다.A type is compatible with itself.

  • 값 형식은 호환 Object 와 해당 값 형식에서 구현 된 인터페이스 형식입니다.A value type is compatible with Object and with an interface type implemented by that value type. 값 형식 인터페이스를 해당 인터페이스를 직접 구현 하는 경우에 연결할 것으로 간주 됩니다.A value type is considered connected to an interface only if it implements that interface directly. 연결이 끊긴된 형식이 호환 되지 않습니다.Disconnected types are not compatible.

  • 내장 (미리 정의 된) 값 유형은 두 확대 변환이 대상 형식이 소스 형식에서 복사 하는 경우 호환입니다.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. 확대 변환 되지 축소 변환에는 정보 손실 될 수 있지만 내용은 손실 됩니다.A widening conversion never loses information, whereas a narrowing conversion can lose information. 예를 들어, 64 비트 부호 있는 정수를 부호 있는 32 비트 정수를 변환할 확대 변환 이며 64 비트 부호 있는 정수는 32 비트 부호 있는 정수로 변환 축소 변환 합니다.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. 변환에 대 한 자세한 내용은 참조 하세요. Convert합니다.For more information about conversions, see Convert.

  • 비 내장 (사용자 정의 됨) 값 형식은 변수와만 호환입니다.A nonintrinsic (user-defined) value type is compatible only with itself.

  • 열거형으로 암시적 변환이 있는 Enum 및 해당 기본 형식입니다.Enumerations have an implicit conversion to Enum and to their underlying type.

경우에 있는 모든 요소가 sourceArray 필요 다운 캐스팅 (예를 들어 파생된 된 클래스에 기본 클래스 또는 개체에 대 한 인터페이스) 및 하나 이상의 요소에 해당 형식으로 캐스팅할 수 없습니다 destinationArray, InvalidCastException throw 됩니다.If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

이 메서드는 상태를 복사 하는 동안 예외를 throw 하는 경우 destinationArray 정의 되지 않습니다.If this method throws an exception while copying, the state of destinationArray is undefined.

이 메서드는 O (n) 작업, 여기서 nlength합니다.This method is an O(n) operation, where n is length.

추가 정보

Copy(Array, Array, Int64) Copy(Array, Array, Int64) Copy(Array, Array, Int64) Copy(Array, Array, Int64)

Array의 요소 범위를 첫 번째 요소부터 복사하여 다른 Array에 첫 번째 요소부터 붙여넣습니다.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. 길이가 64비트 정수로 지정되어 있습니다.The length is specified as a 64-bit integer.

public:
 static void Copy(Array ^ sourceArray, Array ^ destinationArray, long length);
public static void Copy (Array sourceArray, Array destinationArray, long length);
static member Copy : Array * Array * int64 -> unit
Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, length As Long)

매개 변수

sourceArray
Array Array Array Array

복사할 데이터가 포함된 Array입니다.The Array that contains the data to copy.

destinationArray
Array Array Array Array

데이터를 받는 Array입니다.The Array that receives the data.

length
Int64 Int64 Int64 Int64

복사할 요소의 개수를 나타내는 64비트 정수입니다.A 64-bit integer that represents the number of elements to copy. 정수는 0과 MaxValue(포함) 사이여야 합니다.The integer must be between zero and MaxValue, inclusive.

예외

sourceArraynull인 경우sourceArray is null.

또는-or- destinationArraynull인 경우destinationArray is null.

sourceArraydestinationArray의 차수가 다릅니다.sourceArray and destinationArray have different ranks.

sourceArraydestinationArray는 호환되지 않는 형식입니다.sourceArray and destinationArray are of incompatible types.

sourceArray의 하나 이상의 요소를 destinationArray의 형식으로 캐스팅할 수 없습니다.At least one element in sourceArray cannot be cast to the type of destinationArray.

length가 0보다 작거나 MaxValue보다 큽니다.length is less than 0 or greater than MaxValue.

lengthsourceArray의 요소 수보다 큽니다.length is greater than the number of elements in sourceArray.

또는-or- lengthdestinationArray의 요소 수보다 큽니다.length is greater than the number of elements in destinationArray.

설명

합니다 sourceArraydestinationArray 매개 변수 같은 차원 수 있어야 합니다.The sourceArray and destinationArray parameters must have the same number of dimensions. 또한 destinationArray 해야 이미 있는 된 차원이 및 요소 복사 된 데이터에 맞게 충분 한 수 있어야 합니다.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

다차원 배열 간에 복사 하는 경우 배열 처럼 긴 1 차원 배열에 행 (또는 열)은 개념적으로 종단 간 배치 위치 합니다.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end to end. 예를 들어, 배열에 세 개의 행 (또는 열) 4 개 요소를 사용 하 여 각각 복사 6 개의 요소가 있으면 배열의 시작 부분에서 첫 번째 행 (또는 열)의 모든 4 개의 요소가 및 두 번째 행 (또는 열)의 처음 두 요소 복사 됩니다.For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column).

경우 sourceArray 하 고 destinationArray 겹치는 경우이 메서드 동작 처럼의 원래 값 sourceArray 하기 전에 임시 위치에 유지 된 destinationArray 를 덮어씁니다.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

이 메서드는 표준 C + + 함수에 해당 memmove이 아니라 memcpy합니다.This method is equivalent to the standard C/C++ function memmove, not memcpy.

배열은 참조 형식 배열 또는 값 형식 배열 수 있습니다.The arrays can be reference-type arrays or value-type arrays. 형식 다운 캐스팅을 수행 해야 하는 경우.Type downcasting is performed, as required.

  • 참조 형식 배열에서 값 형식 배열에 복사할 때 각 요소는 unboxed 하 고 복사 됩니다.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. 값 형식 배열에서 참조 형식 배열에 복사할 때 각 요소 boxed 이며 그런 다음 복사 됩니다.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • 에 참조 형식 또는 값 형식 배열에서 복사 하는 경우는 Object 배열에는 Object 각 값 또는 참조를 저장 하기 위해 만들어지는 이며 그런 다음 복사 합니다.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. 복사 하는 경우는 Object 배열을 참조 형식 또는 값 형식 배열 및 할당 가능 하지는 InvalidCastException throw 됩니다.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • 경우 sourceArray 하 고 destinationArray 는 모두 참조 형식 배열 또는 형식의 배열은 모두 Object, 단순 복사가 수행 됩니다.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. 단순 복사본을 Array 새로운 Array 원본과 동일한 요소에 대 한 참조를 포함 하 Array합니다.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. 요소는 요소에서 참조 하는 대상은 복사 되지 않습니다.The elements themselves or anything referenced by the elements are not copied. 전체 복사본 하는 반면,는 Array 요소 및 요소에 의해 직접 또는 간접적으로 참조 된 모든 항목을 복사 합니다.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

ArrayTypeMismatchException 배열은 호환 되지 않는 형식의 경우 throw 됩니다.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. 형식 호환성은 다음과 같이 정의 됩니다.Type compatibility is defined as follows:

  • 형식은 자체와 호환 됩니다.A type is compatible with itself.

  • 값 형식은 호환 Object 와 해당 값 형식에서 구현 된 인터페이스 형식입니다.A value type is compatible with Object and with an interface type implemented by that value type. 값 형식 인터페이스를 해당 인터페이스를 직접 구현 하는 경우에 연결할 것으로 간주 됩니다.A value type is considered connected to an interface only if it implements that interface directly. 연결이 끊긴된 형식이 호환 되지 않습니다.Disconnected types are not compatible.

  • 내장 (미리 정의 된) 값 유형은 두 확대 변환이 대상 형식이 소스 형식에서 복사 하는 경우 호환입니다.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. 확대 변환 되지 축소 변환에는 정보 손실 될 수 있지만 내용은 손실 됩니다.A widening conversion never loses information, whereas a narrowing conversion can lose information. 예를 들어, 64 비트 부호 있는 정수를 부호 있는 32 비트 정수를 변환할 확대 변환 이며 64 비트 부호 있는 정수는 32 비트 부호 있는 정수로 변환 축소 변환 합니다.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. 변환에 대 한 자세한 내용은 참조 하세요. Convert합니다.For more information about conversions, see Convert.

  • 비 내장 (사용자 정의 됨) 값 형식은 변수와만 호환입니다.A nonintrinsic (user-defined) value type is compatible only with itself.

  • 열거형으로 암시적 변환이 있는 Enum 및 해당 기본 형식입니다.Enumerations have an implicit conversion to Enum and to their underlying type.

경우에 있는 모든 요소가 sourceArray 필요 다운 캐스팅 (예를 들어 파생된 된 클래스에 기본 클래스 또는 개체에 대 한 인터페이스) 및 하나 이상의 요소에 해당 형식으로 캐스팅할 수 없습니다 destinationArray, InvalidCastException throw 됩니다.If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

이 메서드는 상태를 복사 하는 동안 예외를 throw 하는 경우 destinationArray 정의 되지 않습니다.If this method throws an exception while copying, the state of destinationArray is undefined.

이 메서드는 O (n) 작업, 여기서 nlength합니다.This method is an O(n) operation, where n is length.

추가 정보

Copy(Array, Array, Int32) Copy(Array, Array, Int32) Copy(Array, Array, Int32) Copy(Array, Array, Int32)

Array의 요소 범위를 첫 번째 요소부터 복사하여 다른 Array에 첫 번째 요소부터 붙여넣습니다.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. 길이가 32비트 정수로 지정되어 있습니다.The length is specified as a 32-bit integer.

public:
 static void Copy(Array ^ sourceArray, Array ^ destinationArray, int length);
public static void Copy (Array sourceArray, Array destinationArray, int length);
static member Copy : Array * Array * int -> unit
Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, length As Integer)

매개 변수

sourceArray
Array Array Array Array

복사할 데이터가 포함된 Array입니다.The Array that contains the data to copy.

destinationArray
Array Array Array Array

데이터를 받는 Array입니다.The Array that receives the data.

length
Int32 Int32 Int32 Int32

복사할 요소의 개수를 나타내는 32비트 정수입니다.A 32-bit integer that represents the number of elements to copy.

예외

sourceArraynull인 경우sourceArray is null.

또는-or- destinationArraynull인 경우destinationArray is null.

sourceArraydestinationArray의 차수가 다릅니다.sourceArray and destinationArray have different ranks.

sourceArraydestinationArray는 호환되지 않는 형식입니다.sourceArray and destinationArray are of incompatible types.

sourceArray의 하나 이상의 요소를 destinationArray의 형식으로 캐스팅할 수 없습니다.At least one element in sourceArray cannot be cast to the type of destinationArray.

lengthsourceArray의 요소 수보다 큽니다.length is greater than the number of elements in sourceArray.

또는-or- lengthdestinationArray의 요소 수보다 큽니다.length is greater than the number of elements in destinationArray.

설명

합니다 sourceArraydestinationArray 매개 변수 같은 차원 수 있어야 합니다.The sourceArray and destinationArray parameters must have the same number of dimensions. 또한 destinationArray 해야 이미 있는 된 차원이 및 요소 복사 된 데이터에 맞게 충분 한 수 있어야 합니다.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

다차원 배열 간에 복사 하는 경우 배열 처럼 긴 1 차원 배열에 행 (또는 열)은 개념적으로 종단 간 배치 위치 합니다.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end to end. 예를 들어, 배열에 세 개의 행 (또는 열) 4 개 요소를 사용 하 여 각각 복사 6 개의 요소가 있으면 배열의 시작 부분에서 첫 번째 행 (또는 열)의 모든 4 개의 요소가 및 두 번째 행 (또는 열)의 처음 두 요소 복사 됩니다.For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column).

경우 sourceArray 하 고 destinationArray 겹치는 경우이 메서드 동작 처럼의 원래 값 sourceArray 하기 전에 임시 위치에 유지 된 destinationArray 를 덮어씁니다.If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

이 메서드는 표준 C + + 함수에 해당 memmove이 아니라 memcpy합니다.This method is equivalent to the standard C/C++ function memmove, not memcpy.

배열은 참조 형식 배열 또는 값 형식 배열 수 있습니다.The arrays can be reference-type arrays or value-type arrays. 형식 다운 캐스팅을 수행 해야 하는 경우.Type downcasting is performed, as required.

  • 참조 형식 배열에서 값 형식 배열에 복사할 때 각 요소는 unboxed 하 고 복사 됩니다.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. 값 형식 배열에서 참조 형식 배열에 복사할 때 각 요소 boxed 이며 그런 다음 복사 됩니다.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • 에 참조 형식 또는 값 형식 배열에서 복사 하는 경우는 Object 배열에는 Object 각 값 또는 참조를 저장 하기 위해 만들어지는 이며 그런 다음 복사 합니다.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. 복사 하는 경우는 Object 배열을 참조 형식 또는 값 형식 배열 및 할당 가능 하지는 InvalidCastException throw 됩니다.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • 경우 sourceArray 하 고 destinationArray 는 모두 참조 형식 배열 또는 형식의 배열은 모두 Object, 단순 복사가 수행 됩니다.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. 단순 복사본을 Array 새로운 Array 원본과 동일한 요소에 대 한 참조를 포함 하 Array합니다.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. 요소는 요소에서 참조 하는 대상은 복사 되지 않습니다.The elements themselves or anything referenced by the elements are not copied. 전체 복사본 하는 반면,는 Array 요소 및 요소에 의해 직접 또는 간접적으로 참조 된 모든 항목을 복사 합니다.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

ArrayTypeMismatchException 배열은 호환 되지 않는 형식의 경우 throw 됩니다.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. 형식 호환성은 다음과 같이 정의 됩니다.Type compatibility is defined as follows:

  • 형식은 자체와 호환 됩니다.A type is compatible with itself.

  • 값 형식은 호환 Object 와 해당 값 형식에서 구현 된 인터페이스 형식입니다.A value type is compatible with Object and with an interface type implemented by that value type. 값 형식 인터페이스를 해당 인터페이스를 직접 구현 하는 경우에 연결할 것으로 간주 됩니다.A value type is considered connected to an interface only if it implements that interface directly. 연결이 끊긴된 형식이 호환 되지 않습니다.Disconnected types are not compatible.

  • 내장 (미리 정의 된) 값 유형은 두 확대 변환이 대상 형식이 소스 형식에서 복사 하는 경우 호환입니다.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. 확대 변환 되지 축소 변환에는 정보 손실 될 수 있지만 내용은 손실 됩니다.A widening conversion never loses information, whereas a narrowing conversion can lose information. 예를 들어, 64 비트 부호 있는 정수를 부호 있는 32 비트 정수를 변환할 확대 변환 이며 64 비트 부호 있는 정수는 32 비트 부호 있는 정수로 변환 축소 변환 합니다.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. 변환에 대 한 자세한 내용은 참조 하세요. Convert합니다.For more information about conversions, see Convert.

  • 비 내장 (사용자 정의 됨) 값 형식은 변수와만 호환입니다.A nonintrinsic (user-defined) value type is compatible only with itself.

  • 열거형으로 암시적 변환이 있는 Enum 및 해당 기본 형식입니다.Enumerations have an implicit conversion to Enum and to their underlying type.

경우에 있는 모든 요소가 sourceArray 필요 다운 캐스팅 (예를 들어 파생된 된 클래스에 기본 클래스 또는 개체에 대 한 인터페이스) 및 하나 이상의 요소에 해당 형식으로 캐스팅할 수 없습니다 destinationArray, InvalidCastException throw 됩니다.If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

이 메서드는 상태를 복사 하는 동안 예외를 throw 하는 경우 destinationArray 정의 되지 않습니다.If this method throws an exception while copying, the state of destinationArray is undefined.

이 메서드는 O (n) 작업, 여기서 nlength합니다.This method is an O(n) operation, where n is length.

추가 정보

적용 대상