Array.Copy 메서드

정의

요소의 범위를 서로 ArrayArray 복사하고 필요에 따라 형식 캐스팅 및 boxing을 수행합니다.

오버로드

Name Description
Copy(Array, Int64, Array, Int64, Int64)

지정된 소스 인덱스에서 시작부터 시작하여 지정된 대상 인덱스에서 시작하는 다른 Array 요소 Array 에 붙여넣습니다. 길이와 인덱스는 64비트 정수로 지정됩니다.

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

지정된 소스 인덱스에서 시작부터 시작하여 지정된 대상 인덱스에서 시작하는 다른 Array 요소 Array 에 붙여넣습니다. 길이와 인덱스는 32비트 정수로 지정됩니다.

Copy(Array, Array, Int32)

첫 번째 요소에서 Array 시작하는 요소의 범위를 복사하여 첫 번째 요소에서 시작하는 다른 Array 요소에 붙여넣습니다. 길이는 32비트 정수로 지정됩니다.

Copy(Array, Array, Int64)

첫 번째 요소에서 Array 시작하는 요소의 범위를 복사하여 첫 번째 요소에서 시작하는 다른 Array 요소에 붙여넣습니다. 길이는 64비트 정수로 지정됩니다.

예제

다음 코드 예제에서는 형식 중 하나에서 Array 다른 Object 형식 Array 정수로 복사하는 방법을 보여줍니다.

open System

let printValues (myArr: 'a []) =
    let mutable i = 0;
    let cols = myArr.GetLength(myArr.Rank - 1)
    for item in myArr do
        if i < cols then
            i <- i + 1
        else
            printfn ""
            i <- 1
        printf $"\t{item}"
    printfn ""

 // Creates and initializes a new Array of type int.
let myIntArray = [| 1..5 |]

// Creates and initializes a new Array of type Object.
let myObjArray = Array.init 5 (fun i -> i + 26 :> obj)

// Displays the initial values of both arrays.
printfn "int array:"
printValues myIntArray 
printfn "Object array:"
printValues myObjArray

// Copies the first element from the int 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 int array.
Array.Copy(myObjArray, myObjArray.GetUpperBound 0 - 1, myIntArray, myIntArray.GetUpperBound 0 - 1, 2)

// Displays the values of the modified arrays.
printfn "int array - Last two elements should now be the same as Object array:"
printValues myIntArray 
printfn "Object array - First element should now be the same as int array:"
printValues myObjArray


// This code produces the following output.
//     int array:
//         1    2    3    4    5
//     Object array:
//         26    27    28    29    30
//     int 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 int array:
//         1    27    28    29    30
using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new Array of type int.
      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( "int array:" );
      PrintValues( myIntArray );
      Console.WriteLine( "Object array:" );
      PrintValues( myObjArray );

      // Copies the first element from the int 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 int array.
      Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );

      // Displays the values of the modified arrays.
      Console.WriteLine( "int 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 int 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.

int array:
    1    2    3    4    5
Object array:
    26    27    28    29    30
int 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 int array:
    1    27    28    29    30
*/
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

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

Source:
Array.cs
Source:
Array.cs
Source:
Array.cs
Source:
Array.cs
Source:
Array.cs

지정된 소스 인덱스에서 시작부터 시작하여 지정된 대상 인덱스에서 시작하는 다른 Array 요소 Array 에 붙여넣습니다. 길이와 인덱스는 64비트 정수로 지정됩니다.

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 복사할 데이터가 들어 있는 항목입니다.

sourceIndex
Int64

복사가 시작되는 인덱 sourceArray 스를 나타내는 64비트 정수입니다.

destinationArray
Array

Array 데이터를 받는 대상입니다.

destinationIndex
Int64

저장이 시작되는 인덱 destinationArray 스를 나타내는 64비트 정수입니다.

length
Int64

복사할 요소 수를 나타내는 64비트 정수입니다. 정수는 0과 Int32.MaxValue(포함) 사이여야 합니다.

예외

sourceArraynull입니다.

-또는-

destinationArraynull입니다.

sourceArray 순위 destinationArray 가 다릅니다.

sourceArray 호환 destinationArray 되지 않는 형식입니다.

하나 sourceArray 이상의 요소를 의 형식 destinationArray으로 캐스팅할 수 없습니다.

sourceIndex 가 .에 대한 유효한 인덱스 범위를 벗어났습니다 sourceArray.

-또는-

destinationIndex 가 .에 대한 유효한 인덱스 범위를 벗어났습니다 destinationArray.

-또는-

length 가 0보다 작거나 Int32.MaxValue보다 큰 경우

length가 .의 끝에서 끝까지sourceIndex의 요소 sourceArray 수보다 큰 경우

-또는-

length가 .의 끝에서 끝까지destinationIndex의 요소 destinationArray 수보다 큰 경우

설명

sourceArraydestinationArray 매개 변수의 차원 수는 같아야 합니다. 또한 destinationArray 이미 차원화되어 있어야 하며 복사된 데이터를 수용하기 위해 위치에서 시작하는 destinationIndex 충분한 수의 요소가 있어야 합니다.

다차원 배열 간에 복사할 때 배열은 긴 1차원 배열처럼 동작하며, 여기서 행(또는 열)은 개념적으로 엔드 투 엔드로 배치됩니다. 예를 들어 배열에 각각 4개의 요소가 있는 세 개의 행(또는 열)이 있는 경우 배열의 시작 부분에서 6개의 요소를 복사하면 첫 번째 행(또는 열)의 4개 요소와 두 번째 행(또는 열)의 처음 두 요소가 모두 복사됩니다. 세 번째 행(또는 열) sourceIndex 의 두 번째 요소에서 복사를 시작하려면 첫 번째 행(또는 열)의 상한에 두 번째 행(또는 열)의 길이와 2를 더한 값이어야 합니다.

sourceArray 겹치는 경우 destinationArray 이 메서드는 원래 값 sourceArray 이 덮어쓰기 전에 destinationArray 임시 위치에 유지된 것처럼 동작합니다.

[C++]

이 메서드는 표준 C/C++ 함수 memmove와 동일하며 memcpy.

배열은 참조 형식 배열 또는 값 형식 배열일 수 있습니다. 필요에 따라 형식 다운캐스팅이 수행됩니다.

  • 참조 형식 배열에서 값 형식 배열로 복사할 때 각 요소는 unboxed 후 복사됩니다. 값 형식 배열에서 참조 형식 배열로 복사할 때 각 요소가 boxed되고 복사됩니다.

  • 참조 형식 또는 값 형식 배열에서 배열 Object 로 복사할 Object 때 각 값 또는 참조를 저장하도록 만들어지고 복사됩니다. 배열에서 Object 참조 형식 또는 값 형식 배열로 복사할 수 InvalidCastException 없는 경우 할당이 throw됩니다.

  • 참조 형식 배열이거나 sourceArray 둘 다 형식destinationArray의 배열인 경우 Object 단순 복사가 수행됩니다. 단순 복사본은 원본Array과 동일한 요소에 대한 참조를 포함하는 새 Array 복사본 Array 입니다. 요소 자체 또는 요소에서 참조하는 모든 항목은 복사되지 않습니다. 반면, 전체 복사본은 Array 요소와 요소에서 직접 또는 간접적으로 참조하는 모든 항목을 복사합니다.

배열이 호환되지 않는 형식인 경우 throw ArrayTypeMismatchException 됩니다. 형식 호환성은 다음과 같이 정의됩니다.

  • 형식은 자체와 호환됩니다.

  • 값 형식은 해당 값 형식에 의해 구현된 인터페이스 형식과 Object 호환됩니다. 값 형식은 해당 인터페이스를 직접 구현하는 경우에만 인터페이스에 연결된 것으로 간주됩니다. 연결이 끊긴 형식은 호환되지 않습니다.

  • 원본 형식에서 대상 형식으로 복사하는 것이 확대 변환인 경우 두 가지 내장(미리 정의된) 값 형식이 호환됩니다. 확대 변환은 정보를 잃지 않는 반면 축소 변환은 정보를 잃을 수 있습니다. 예를 들어 부 서명된 32비트 정수를 64비트 부가 정수로 변환하는 것은 확대 변환이며 64비트 부가 정수는 32비트 부가 정수로 변환하는 것은 축소 변환입니다. 변환에 대한 자세한 내용은 다음을 참조하세요 Convert.

  • 기본이 아닌(사용자 정의) 값 형식은 자체와만 호환됩니다.

  • 열거형에는 내부 형식으로 Enum 의 암시적 변환이 있습니다.

모든 요소에 sourceArray 다운캐스트가 필요한 경우(예: 기본 클래스에서 파생 클래스로 또는 인터페이스에서 개체로) 하나 이상의 요소를 해당 형식으로 destinationArray캐스팅할 수 없으면 throw InvalidCastException 됩니다.

복사하는 동안 이 메서드가 예외를 throw하는 경우 상태는 destinationArray 정의되지 않습니다.

이 메서드는 O(n) 연산입니다. 여기서 nlength.

추가 정보

적용 대상

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

Source:
Array.cs
Source:
Array.cs
Source:
Array.CoreCLR.cs
Source:
Array.cs
Source:
Array.cs

지정된 소스 인덱스에서 시작부터 시작하여 지정된 대상 인덱스에서 시작하는 다른 Array 요소 Array 에 붙여넣습니다. 길이와 인덱스는 32비트 정수로 지정됩니다.

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 복사할 데이터가 들어 있는 항목입니다.

sourceIndex
Int32

복사가 시작되는 인덱 sourceArray 스를 나타내는 32비트 정수입니다.

destinationArray
Array

Array 데이터를 받는 대상입니다.

destinationIndex
Int32

저장이 시작되는 인덱 destinationArray 스를 나타내는 32비트 정수입니다.

length
Int32

복사할 요소 수를 나타내는 32비트 정수입니다.

예외

sourceArraynull입니다.

-또는-

destinationArraynull입니다.

sourceArray 순위 destinationArray 가 다릅니다.

sourceArray 호환 destinationArray 되지 않는 형식입니다.

하나 sourceArray 이상의 요소를 의 형식 destinationArray으로 캐스팅할 수 없습니다.

sourceIndex 가 1차원 sourceArray의 하한보다 작습니다.

-또는-

destinationIndex 가 1차원 destinationArray의 하한보다 작습니다.

-또는-

length가 0보다 작습니다.

length가 .의 끝에서 끝까지sourceIndex의 요소 sourceArray 수보다 큰 경우

-또는-

length가 .의 끝에서 끝까지destinationIndex의 요소 destinationArray 수보다 큰 경우

설명

sourceArraydestinationArray 매개 변수의 차원 수는 같아야 합니다. 또한 destinationArray 이미 차원화되어 있어야 하며 복사된 데이터를 수용하기 위해 위치에서 시작하는 destinationIndex 충분한 수의 요소가 있어야 합니다.

다차원 배열 간에 복사할 때 배열은 긴 1차원 배열처럼 동작하며, 여기서 행(또는 열)은 개념적으로 엔드 투 엔드로 배치됩니다. 예를 들어 배열에 각각 4개의 요소가 있는 세 개의 행(또는 열)이 있는 경우 배열의 시작 부분에서 6개의 요소를 복사하면 첫 번째 행(또는 열)의 4개 요소와 두 번째 행(또는 열)의 처음 두 요소가 모두 복사됩니다. 세 번째 행(또는 열) sourceIndex 의 두 번째 요소에서 복사를 시작하려면 첫 번째 행(또는 열)의 상한에 두 번째 행(또는 열)의 길이와 2를 더한 값이어야 합니다.

sourceArray 겹치는 경우 destinationArray 이 메서드는 원래 값 sourceArray 이 덮어쓰기 전에 destinationArray 임시 위치에 유지된 것처럼 동작합니다.

[C++]

이 메서드는 표준 C/C++ 함수 memmove와 동일하며 memcpy.

배열은 참조 형식 배열 또는 값 형식 배열일 수 있습니다. 필요에 따라 형식 다운캐스팅이 수행됩니다.

  • 참조 형식 배열에서 값 형식 배열로 복사할 때 각 요소는 unboxed 후 복사됩니다. 값 형식 배열에서 참조 형식 배열로 복사할 때 각 요소가 boxed되고 복사됩니다.

  • 참조 형식 또는 값 형식 배열에서 배열 Object 로 복사할 Object 때 각 값 또는 참조를 저장하도록 만들어지고 복사됩니다. 배열에서 Object 참조 형식 또는 값 형식 배열로 복사할 수 InvalidCastException 없는 경우 할당이 throw됩니다.

  • 참조 형식 배열이거나 sourceArray 둘 다 형식destinationArray의 배열인 경우 Object 단순 복사가 수행됩니다. 단순 복사본은 원본Array과 동일한 요소에 대한 참조를 포함하는 새 Array 복사본 Array 입니다. 요소 자체 또는 요소에서 참조하는 모든 항목은 복사되지 않습니다. 반면, 전체 복사본은 Array 요소와 요소에서 직접 또는 간접적으로 참조하는 모든 항목을 복사합니다.

배열이 호환되지 않는 형식인 경우 throw ArrayTypeMismatchException 됩니다. 형식 호환성은 다음과 같이 정의됩니다.

  • 형식은 자체와 호환됩니다.

  • 값 형식은 해당 값 형식에 의해 구현된 인터페이스 형식과 Object 호환됩니다. 값 형식은 해당 인터페이스를 직접 구현하는 경우에만 인터페이스에 연결된 것으로 간주됩니다. 연결이 끊긴 형식은 호환되지 않습니다.

  • 원본 형식에서 대상 형식으로 복사하는 것이 확대 변환인 경우 두 가지 내장(미리 정의된) 값 형식이 호환됩니다. 확대 변환은 정보를 잃지 않는 반면 축소 변환은 정보를 잃을 수 있습니다. 예를 들어 부 서명된 32비트 정수를 64비트 부가 정수로 변환하는 것은 확대 변환이며 64비트 부가 정수는 32비트 부가 정수로 변환하는 것은 축소 변환입니다. 변환에 대한 자세한 내용은 다음을 참조하세요 Convert.

  • 기본이 아닌(사용자 정의) 값 형식은 자체와만 호환됩니다.

  • 열거형에는 내부 형식으로 Enum 의 암시적 변환이 있습니다.

모든 요소에 sourceArray 다운캐스트가 필요한 경우(예: 기본 클래스에서 파생 클래스로 또는 인터페이스에서 개체로) 하나 이상의 요소를 해당 형식으로 destinationArray캐스팅할 수 없으면 throw InvalidCastException 됩니다.

복사하는 동안 이 메서드가 예외를 throw하는 경우 상태는 destinationArray 정의되지 않습니다.

이 메서드는 O(n) 연산입니다. 여기서 nlength.

추가 정보

적용 대상

Copy(Array, Array, Int32)

Source:
Array.cs
Source:
Array.cs
Source:
Array.CoreCLR.cs
Source:
Array.cs
Source:
Array.cs

첫 번째 요소에서 Array 시작하는 요소의 범위를 복사하여 첫 번째 요소에서 시작하는 다른 Array 요소에 붙여넣습니다. 길이는 32비트 정수로 지정됩니다.

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 복사할 데이터가 들어 있는 항목입니다.

destinationArray
Array

Array 데이터를 받는 대상입니다.

length
Int32

복사할 요소 수를 나타내는 32비트 정수입니다.

예외

sourceArraynull입니다.

-또는-

destinationArraynull입니다.

sourceArray 순위 destinationArray 가 다릅니다.

sourceArray 호환 destinationArray 되지 않는 형식입니다.

하나 sourceArray 이상의 요소를 의 형식 destinationArray으로 캐스팅할 수 없습니다.

length가 0보다 작습니다.

length가 .의 요소 수보다 큰 경우 sourceArray

-또는-

length가 .의 요소 수보다 큰 경우 destinationArray

설명

sourceArraydestinationArray 매개 변수의 차원 수는 같아야 합니다. 또한 destinationArray 이미 차원화되어 있어야 하며 복사된 데이터를 수용하기에 충분한 수의 요소가 있어야 합니다.

다차원 배열 간에 복사할 때 배열은 긴 1차원 배열처럼 동작하며, 여기서 행(또는 열)은 개념적으로 종단 간 배치됩니다. 예를 들어 배열에 각각 4개의 요소가 있는 세 개의 행(또는 열)이 있는 경우 배열의 시작 부분에서 6개의 요소를 복사하면 첫 번째 행(또는 열)의 4개 요소와 두 번째 행(또는 열)의 처음 두 요소가 모두 복사됩니다.

sourceArray 겹치는 경우 destinationArray 이 메서드는 원래 값 sourceArray 이 덮어쓰기 전에 destinationArray 임시 위치에 유지된 것처럼 동작합니다.

[C++]

이 메서드는 표준 C/C++ 함수 memmove와 동일하며 memcpy.

배열은 참조 형식 배열 또는 값 형식 배열일 수 있습니다. 필요에 따라 형식 다운캐스팅이 수행됩니다.

  • 참조 형식 배열에서 값 형식 배열로 복사할 때 각 요소는 unboxed 후 복사됩니다. 값 형식 배열에서 참조 형식 배열로 복사할 때 각 요소가 boxed되고 복사됩니다.

  • 참조 형식 또는 값 형식 배열에서 배열 Object 로 복사할 Object 때 각 값 또는 참조를 저장하도록 만들어지고 복사됩니다. 배열에서 Object 참조 형식 또는 값 형식 배열로 복사할 수 InvalidCastException 없는 경우 할당이 throw됩니다.

  • 참조 형식 배열이거나 sourceArray 둘 다 형식destinationArray의 배열인 경우 Object 단순 복사가 수행됩니다. 단순 복사본은 원본Array과 동일한 요소에 대한 참조를 포함하는 새 Array 복사본 Array 입니다. 요소 자체 또는 요소에서 참조하는 모든 항목은 복사되지 않습니다. 반면, 전체 복사본은 Array 요소와 요소에서 직접 또는 간접적으로 참조하는 모든 항목을 복사합니다.

배열이 호환되지 않는 형식인 경우 throw ArrayTypeMismatchException 됩니다. 형식 호환성은 다음과 같이 정의됩니다.

  • 형식은 자체와 호환됩니다.

  • 값 형식은 해당 값 형식에 의해 구현된 인터페이스 형식과 Object 호환됩니다. 값 형식은 해당 인터페이스를 직접 구현하는 경우에만 인터페이스에 연결된 것으로 간주됩니다. 연결이 끊긴 형식은 호환되지 않습니다.

  • 원본 형식에서 대상 형식으로 복사하는 것이 확대 변환인 경우 두 가지 내장(미리 정의된) 값 형식이 호환됩니다. 확대 변환은 정보를 잃지 않는 반면 축소 변환은 정보를 잃을 수 있습니다. 예를 들어 부 서명된 32비트 정수를 64비트 부가 정수로 변환하는 것은 확대 변환이며 64비트 부가 정수는 32비트 부가 정수로 변환하는 것은 축소 변환입니다. 변환에 대한 자세한 내용은 다음을 참조하세요 Convert.

  • 기본이 아닌(사용자 정의) 값 형식은 자체와만 호환됩니다.

  • 열거형에는 내부 형식으로 Enum 의 암시적 변환이 있습니다.

모든 요소에 sourceArray 다운캐스트가 필요한 경우(예: 기본 클래스에서 파생 클래스로 또는 인터페이스에서 개체로) 하나 이상의 요소를 해당 형식으로 destinationArray캐스팅할 수 없으면 throw InvalidCastException 됩니다.

복사하는 동안 이 메서드가 예외를 throw하는 경우 상태는 destinationArray 정의되지 않습니다.

이 메서드는 O(n) 연산입니다. 여기서 nlength.

추가 정보

적용 대상

Copy(Array, Array, Int64)

Source:
Array.cs
Source:
Array.cs
Source:
Array.cs
Source:
Array.cs
Source:
Array.cs

첫 번째 요소에서 Array 시작하는 요소의 범위를 복사하여 첫 번째 요소에서 시작하는 다른 Array 요소에 붙여넣습니다. 길이는 64비트 정수로 지정됩니다.

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 복사할 데이터가 들어 있는 항목입니다.

destinationArray
Array

Array 데이터를 받는 대상입니다.

length
Int64

복사할 요소 수를 나타내는 64비트 정수입니다. 정수는 0과 Int32.MaxValue(포함) 사이여야 합니다.

예외

sourceArraynull입니다.

-또는-

destinationArraynull입니다.

sourceArray 순위 destinationArray 가 다릅니다.

sourceArray 호환 destinationArray 되지 않는 형식입니다.

하나 sourceArray 이상의 요소를 의 형식 destinationArray으로 캐스팅할 수 없습니다.

length 가 0보다 작거나 Int32.MaxValue보다 큰 경우

length가 .의 요소 수보다 큰 경우 sourceArray

-또는-

length가 .의 요소 수보다 큰 경우 destinationArray

설명

sourceArraydestinationArray 매개 변수의 차원 수는 같아야 합니다. 또한 destinationArray 이미 차원화되어 있어야 하며 복사된 데이터를 수용하기에 충분한 수의 요소가 있어야 합니다.

다차원 배열 간에 복사할 때 배열은 긴 1차원 배열처럼 동작하며, 여기서 행(또는 열)은 개념적으로 종단 간 배치됩니다. 예를 들어 배열에 각각 4개의 요소가 있는 세 개의 행(또는 열)이 있는 경우 배열의 시작 부분에서 6개의 요소를 복사하면 첫 번째 행(또는 열)의 4개 요소와 두 번째 행(또는 열)의 처음 두 요소가 모두 복사됩니다.

sourceArray 겹치는 경우 destinationArray 이 메서드는 원래 값 sourceArray 이 덮어쓰기 전에 destinationArray 임시 위치에 유지된 것처럼 동작합니다.

[C++]

이 메서드는 표준 C/C++ 함수 memmove와 동일하며 memcpy.

배열은 참조 형식 배열 또는 값 형식 배열일 수 있습니다. 필요에 따라 형식 다운캐스팅이 수행됩니다.

  • 참조 형식 배열에서 값 형식 배열로 복사할 때 각 요소는 unboxed 후 복사됩니다. 값 형식 배열에서 참조 형식 배열로 복사할 때 각 요소가 boxed되고 복사됩니다.

  • 참조 형식 또는 값 형식 배열에서 배열 Object 로 복사할 Object 때 각 값 또는 참조를 저장하도록 만들어지고 복사됩니다. 배열에서 Object 참조 형식 또는 값 형식 배열로 복사할 수 InvalidCastException 없는 경우 할당이 throw됩니다.

  • 참조 형식 배열이거나 sourceArray 둘 다 형식destinationArray의 배열인 경우 Object 단순 복사가 수행됩니다. 단순 복사본은 원본Array과 동일한 요소에 대한 참조를 포함하는 새 Array 복사본 Array 입니다. 요소 자체 또는 요소에서 참조하는 모든 항목은 복사되지 않습니다. 반면, 전체 복사본은 Array 요소와 요소에서 직접 또는 간접적으로 참조하는 모든 항목을 복사합니다.

배열이 호환되지 않는 형식인 경우 throw ArrayTypeMismatchException 됩니다. 형식 호환성은 다음과 같이 정의됩니다.

  • 형식은 자체와 호환됩니다.

  • 값 형식은 해당 값 형식에 의해 구현된 인터페이스 형식과 Object 호환됩니다. 값 형식은 해당 인터페이스를 직접 구현하는 경우에만 인터페이스에 연결된 것으로 간주됩니다. 연결이 끊긴 형식은 호환되지 않습니다.

  • 원본 형식에서 대상 형식으로 복사하는 것이 확대 변환인 경우 두 가지 내장(미리 정의된) 값 형식이 호환됩니다. 확대 변환은 정보를 잃지 않는 반면 축소 변환은 정보를 잃을 수 있습니다. 예를 들어 부 서명된 32비트 정수를 64비트 부가 정수로 변환하는 것은 확대 변환이며 64비트 부가 정수는 32비트 부가 정수로 변환하는 것은 축소 변환입니다. 변환에 대한 자세한 내용은 다음을 참조하세요 Convert.

  • 기본이 아닌(사용자 정의) 값 형식은 자체와만 호환됩니다.

  • 열거형에는 내부 형식으로 Enum 의 암시적 변환이 있습니다.

모든 요소에 sourceArray 다운캐스트가 필요한 경우(예: 기본 클래스에서 파생 클래스로 또는 인터페이스에서 개체로) 하나 이상의 요소를 해당 형식으로 destinationArray캐스팅할 수 없으면 throw InvalidCastException 됩니다.

복사하는 동안 이 메서드가 예외를 throw하는 경우 상태는 destinationArray 정의되지 않습니다.

이 메서드는 O(n) 연산입니다. 여기서 nlength.

추가 정보

적용 대상