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

Definition

Kopiert einen Bereich von Elementen eines Array in ein anderes Array und führt ggf. Typumwandlungen und Boxing durch.Copies a range of elements in one Array to another Array and performs type casting and boxing as required.

Überlädt

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

Kopiert einen beim angegebenen Quellindex beginnenden Elementbereich aus einem Array und fügt ihn ab dem angegebenen Zielindex in ein anderes Array ein.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. Die Länge und die Indizes werden als 64-Bit-Ganzzahlen angegeben.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)

Kopiert einen beim angegebenen Quellindex beginnenden Elementbereich aus einem Array und fügt ihn ab dem angegebenen Zielindex in ein anderes Array ein.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. Die Länge und die Indizes werden als 32-Bit-Ganzzahlen angegeben.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)

Kopiert einen mit dem ersten Element beginnenden Elementbereich eines Array und fügt ihn ab dem ersten Element in ein anderes Array ein.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Die Länge wird als 64-Bit-Ganzzahl angegeben.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)

Kopiert einen mit dem ersten Element beginnenden Elementbereich eines Array und fügt ihn ab dem ersten Element in ein anderes Array ein.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Die Länge wird als 32-Bit-Ganzzahl angegeben.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)

Kopiert einen beim angegebenen Quellindex beginnenden Elementbereich aus einem Array und fügt ihn ab dem angegebenen Zielindex in ein anderes Array ein.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. Die Länge und die Indizes werden als 64-Bit-Ganzzahlen angegeben.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)

Parameter

sourceArray
Array Array Array Array

Das Array, das die zu kopierenden Daten enthält.The Array that contains the data to copy.

sourceIndex
Int64 Int64 Int64 Int64

Eine 64-Bit-Ganzzahl, die den Index im sourceArray angibt, ab dem kopiert werden soll.A 64-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array Array Array Array

Das Array, das die Daten empfängt.The Array that receives the data.

destinationIndex
Int64 Int64 Int64 Int64

Eine 64-Bit-Ganzzahl, die den Index im destinationArray angibt, ab dem gespeichert werden soll.A 64-bit integer that represents the index in the destinationArray at which storing begins.

length
Int64 Int64 Int64 Int64

Eine 64-Bit-Ganzzahl, die die Anzahl der zu kopierenden Elemente darstellt.A 64-bit integer that represents the number of elements to copy. Die Ganzzahl muss zwischen 0 (null) und einschließlich MaxValue liegen.The integer must be between zero and MaxValue, inclusive.

Ausnahmen

sourceArray ist null.sourceArray is null.

- oder - -or- destinationArray ist null.destinationArray is null.

sourceArray und destinationArray sind von unterschiedlichem Rang.sourceArray and destinationArray have different ranks.

sourceArray und destinationArray weisen inkompatible Typen auf.sourceArray and destinationArray are of incompatible types.

Mindestens ein Element im sourceArray kann nicht in den Typ des destinationArrays umgewandelt werden.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex liegt außerhalb des Bereichs der gültigen Indizes für das sourceArray.sourceIndex is outside the range of valid indexes for the sourceArray.

- oder - -or- destinationIndex liegt außerhalb des Bereichs der gültigen Indizes für das destinationArray.destinationIndex is outside the range of valid indexes for the destinationArray.

- oder - -or- length ist kleiner als 0 oder größer als MaxValue.length is less than 0 or greater than MaxValue.

length ist größer als die Anzahl der Elemente vom sourceIndex bis zum Ende des sourceArrays.length is greater than the number of elements from sourceIndex to the end of sourceArray.

- oder - -or- length ist größer als die Anzahl der Elemente vom destinationIndex bis zum Ende des destinationArrays.length is greater than the number of elements from destinationIndex to the end of destinationArray.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie zum Kopieren aus einer Array des Typs Object in ein anderes Array vom Integer-Typ.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

Hinweise

Die sourceArray und destinationArray -Parameter müssen die gleiche Anzahl von Dimensionen haben.The sourceArray and destinationArray parameters must have the same number of dimensions. Darüber hinaus destinationArray muss bereits haben wurde dimensioniert und muss eine ausreichende Anzahl von Elementen, beginnend mit der destinationIndex Position, um die kopierten Daten aufzunehmen.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.

Beim Kopieren zwischen mehrdimensionalen Arrays verhält sich das Array wie ein langes eindimensionales Array, in dem die Zeilen (oder Spalten) vom Konzept her End-to-End-angeordnet sind.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. Wenn ein Array drei Zeilen (oder Spalten) mit vier Elementen, Kopieren von sechs Elementen vom Anfang des Arrays würde z. B. alle vier Elemente der ersten Zeile (oder Spalte) und die ersten beiden Elemente der zweiten Zeile (oder Spalte) kopieren.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). Mit dem Kopieren begonnen, über das zweite Element der dritten Zeile (oder Spalte), sourceIndex muss die obere Grenze der ersten Zeile (oder Spalte) plus die Länge der zweiten Zeile (oder Spalte) sowie zwei sein.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.

Wenn sourceArray und destinationArray überlappen, diese Methode verhält sich wie die ursprünglichen Werte der sourceArray beibehalten wurden, in einen temporären Speicherort vor dem destinationArray wird überschrieben.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++]

Diese Methode entspricht der C/C++-Standardfunktion memmove, nicht memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

Die Arrays können es sich um Verweistyparrays oder Werttypen sein.The arrays can be reference-type arrays or value-type arrays. Eine Umwandlung des Typs ausgeführt wird, nach Bedarf.Type downcasting is performed, as required.

  • Beim Kopieren aus einem Verweistyp-Array in ein Array von Werttyp wird jedes Element mittels Unboxing zurückkonvertiert und kopiert.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Beim Kopieren aus einem Array von Werttyp in einen Verweistyp-Array wird jedes Element mittels Boxing konvertiert und anschließend kopiert.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Beim Kopieren aus einem Verweistyp oder Werttyp-Array eine Object Array, ein Object erstellt, um jeden Wert oder Verweis enthalten ist, und klicken Sie dann kopiert.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. Beim Kopieren aus einer Object Array, das ein Array vom Verweistyp oder Werttyp und die Zuweisung ist nicht möglich, eine InvalidCastException ausgelöst.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Wenn sourceArray und destinationArray Verweistyp-Arrays sind oder Arrays des Typs sind Object, eine flache Kopie wird ausgeführt.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Eine flache Kopie einer Array ist ein neues Array , die Verweise auf die gleichen Elemente wie die ursprüngliche Array.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Die Elemente selbst oder für etwas auf die verwiesen wird durch die Elemente werden nicht kopiert.The elements themselves or anything referenced by the elements are not copied. Im Gegensatz dazu eine tiefe Kopie von einer Array kopiert die Elemente und alles direkt oder indirekt auf die verwiesen wird durch die Elemente.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Ein ArrayTypeMismatchException wird ausgelöst, wenn die Arrays von inkompatiblen Typen sind.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. Typkompatibilität wird wie folgt definiert:Type compatibility is defined as follows:

  • Ein Typ ist kompatibel mit sich selbst.A type is compatible with itself.

  • Ein Werttyp ist kompatibel mit Object und mit einem Schnittstellentyp, der durch diesen Werttyp implementiert.A value type is compatible with Object and with an interface type implemented by that value type. Mit einer Schnittstelle verbunden ist, nur dann, wenn sie diese Schnittstelle direkt implementiert, ist ein Werttyp gilt.A value type is considered connected to an interface only if it implements that interface directly. Nicht verbundene Typen sind nicht kompatibel.Disconnected types are not compatible.

  • Zwei Arten von systeminternen (vordefinierten) Wert sind kompatibel, wenn kopieren aus einer Datenquelle in den Zieltyp eine erweiternde Konvertierung ist.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Nie eine erweiternde Konvertierung verliert Informationen an, während eine einschränkende Konvertierung Informationen verloren gehen kann.A widening conversion never loses information, whereas a narrowing conversion can lose information. Beispielsweise konvertieren eine 32-Bit-Ganzzahl mit Vorzeichen in eine 64-Bit-Ganzzahl mit Vorzeichen eine erweiternde Konvertierung ist, und konvertieren eine 64-Bit-Ganzzahl mit Vorzeichen in eine 32-Bit-Ganzzahl mit Vorzeichen ist eine einschränkende Konvertierung.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. Weitere Informationen über Konvertierungen finden Sie unter Convert.For more information about conversions, see Convert.

  • Ein systeminterner (Benutzerdefiniert) Wert ist nur mit sich selbst kompatibel.A nonintrinsic (user-defined) value type is compatible only with itself.

  • -Enumerationen verfügen über eine implizite Konvertierung in Enum und ihren zugrunde liegenden Typ.Enumerations have an implicit conversion to Enum and to their underlying type.

Wenn jedes Element in sourceArray eine Umwandlung erfordert (z. B. von einer Basisklasse in einer abgeleiteten Klasse oder von einer Schnittstelle in ein Objekt) und einem oder mehreren Elementen können nicht in den entsprechenden Typ umgewandelt werden destinationArray, InvalidCastException ausgelöst.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.

Wenn diese Methode eine beim Kopieren Ausnahme, des Status der destinationArray ist nicht definiert.If this method throws an exception while copying, the state of destinationArray is undefined.

Diese Methode ist eine O (n)-Vorgang, in denen n ist length.This method is an O(n) operation, where n is length.

Siehe auch

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

Kopiert einen beim angegebenen Quellindex beginnenden Elementbereich aus einem Array und fügt ihn ab dem angegebenen Zielindex in ein anderes Array ein.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. Die Länge und die Indizes werden als 32-Bit-Ganzzahlen angegeben.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)

Parameter

sourceArray
Array Array Array Array

Das Array, das die zu kopierenden Daten enthält.The Array that contains the data to copy.

sourceIndex
Int32 Int32 Int32 Int32

Eine 32-Bit-Ganzzahl, die den Index im sourceArray angibt, ab dem kopiert werden soll.A 32-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array Array Array Array

Das Array, das die Daten empfängt.The Array that receives the data.

destinationIndex
Int32 Int32 Int32 Int32

Eine 32-Bit-Ganzzahl, die den Index im destinationArray angibt, ab dem gespeichert werden soll.A 32-bit integer that represents the index in the destinationArray at which storing begins.

length
Int32 Int32 Int32 Int32

Eine 32-Bit-Ganzzahl, die die Anzahl der zu kopierenden Elemente darstellt.A 32-bit integer that represents the number of elements to copy.

Ausnahmen

sourceArray ist null.sourceArray is null.

- oder - -or- destinationArray ist null.destinationArray is null.

sourceArray und destinationArray sind von unterschiedlichem Rang.sourceArray and destinationArray have different ranks.

sourceArray und destinationArray weisen inkompatible Typen auf.sourceArray and destinationArray are of incompatible types.

Mindestens ein Element im sourceArray kann nicht in den Typ des destinationArrays umgewandelt werden.At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex ist kleiner als die untere Grenze der ersten Dimension von sourceArray.sourceIndex is less than the lower bound of the first dimension of sourceArray.

- oder - -or- destinationIndex ist kleiner als die untere Grenze der ersten Dimension von destinationArray.destinationIndex is less than the lower bound of the first dimension of destinationArray.

- oder - -or- length ist kleiner als Null.length is less than zero.

length ist größer als die Anzahl der Elemente vom sourceIndex bis zum Ende des sourceArrays.length is greater than the number of elements from sourceIndex to the end of sourceArray.

- oder - -or- length ist größer als die Anzahl der Elemente vom destinationIndex bis zum Ende des destinationArrays.length is greater than the number of elements from destinationIndex to the end of destinationArray.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie zum Kopieren aus einer Array des Typs Object in ein anderes Array vom Integer-Typ.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

Hinweise

Die sourceArray und destinationArray -Parameter müssen die gleiche Anzahl von Dimensionen haben.The sourceArray and destinationArray parameters must have the same number of dimensions. Darüber hinaus destinationArray muss bereits haben wurde dimensioniert und muss eine ausreichende Anzahl von Elementen, beginnend mit der destinationIndex Position, um die kopierten Daten aufzunehmen.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.

Beim Kopieren zwischen mehrdimensionalen Arrays verhält sich das Array wie ein langes eindimensionales Array, in dem die Zeilen (oder Spalten) vom Konzept her End-to-End-angeordnet sind.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. Wenn ein Array drei Zeilen (oder Spalten) mit vier Elementen, Kopieren von sechs Elementen vom Anfang des Arrays würde z. B. alle vier Elemente der ersten Zeile (oder Spalte) und die ersten beiden Elemente der zweiten Zeile (oder Spalte) kopieren.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). Mit dem Kopieren begonnen, über das zweite Element der dritten Zeile (oder Spalte), sourceIndex muss die obere Grenze der ersten Zeile (oder Spalte) plus die Länge der zweiten Zeile (oder Spalte) sowie zwei sein.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.

Wenn sourceArray und destinationArray überlappen, diese Methode verhält sich wie die ursprünglichen Werte der sourceArray beibehalten wurden, in einen temporären Speicherort vor dem destinationArray wird überschrieben.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++]

Diese Methode entspricht der C/C++-Standardfunktion memmove, nicht memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

Die Arrays können es sich um Verweistyparrays oder Werttypen sein.The arrays can be reference-type arrays or value-type arrays. Eine Umwandlung des Typs ausgeführt wird, nach Bedarf.Type downcasting is performed, as required.

  • Beim Kopieren aus einem Verweistyp-Array in ein Array von Werttyp wird jedes Element mittels Unboxing zurückkonvertiert und kopiert.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Beim Kopieren aus einem Array von Werttyp in einen Verweistyp-Array wird jedes Element mittels Boxing konvertiert und anschließend kopiert.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Beim Kopieren aus einem Verweistyp oder Werttyp-Array eine Object Array, ein Object erstellt, um jeden Wert oder Verweis enthalten ist, und klicken Sie dann kopiert.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. Beim Kopieren aus einer Object Array, das ein Array vom Verweistyp oder Werttyp und die Zuweisung ist nicht möglich, eine InvalidCastException ausgelöst.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Wenn sourceArray und destinationArray Verweistyp-Arrays sind oder Arrays des Typs sind Object, eine flache Kopie wird ausgeführt.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Eine flache Kopie einer Array ist ein neues Array , die Verweise auf die gleichen Elemente wie die ursprüngliche Array.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Die Elemente selbst oder für etwas auf die verwiesen wird durch die Elemente werden nicht kopiert.The elements themselves or anything referenced by the elements are not copied. Im Gegensatz dazu eine tiefe Kopie von einer Array kopiert die Elemente und alles direkt oder indirekt auf die verwiesen wird durch die Elemente.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Ein ArrayTypeMismatchException wird ausgelöst, wenn die Arrays von inkompatiblen Typen sind.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. Typkompatibilität wird wie folgt definiert:Type compatibility is defined as follows:

  • Ein Typ ist kompatibel mit sich selbst.A type is compatible with itself.

  • Ein Werttyp ist kompatibel mit Object und mit einem Schnittstellentyp, der durch diesen Werttyp implementiert.A value type is compatible with Object and with an interface type implemented by that value type. Mit einer Schnittstelle verbunden ist, nur dann, wenn sie diese Schnittstelle direkt implementiert, ist ein Werttyp gilt.A value type is considered connected to an interface only if it implements that interface directly. Nicht verbundene Typen sind nicht kompatibel.Disconnected types are not compatible.

  • Zwei Arten von systeminternen (vordefinierten) Wert sind kompatibel, wenn kopieren aus einer Datenquelle in den Zieltyp eine erweiternde Konvertierung ist.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Nie eine erweiternde Konvertierung verliert Informationen an, während eine einschränkende Konvertierung Informationen verloren gehen kann.A widening conversion never loses information, whereas a narrowing conversion can lose information. Beispielsweise konvertieren eine 32-Bit-Ganzzahl mit Vorzeichen in eine 64-Bit-Ganzzahl mit Vorzeichen eine erweiternde Konvertierung ist, und konvertieren eine 64-Bit-Ganzzahl mit Vorzeichen in eine 32-Bit-Ganzzahl mit Vorzeichen ist eine einschränkende Konvertierung.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. Weitere Informationen über Konvertierungen finden Sie unter Convert.For more information about conversions, see Convert.

  • Ein systeminterner (Benutzerdefiniert) Wert ist nur mit sich selbst kompatibel.A nonintrinsic (user-defined) value type is compatible only with itself.

  • -Enumerationen verfügen über eine implizite Konvertierung in Enum und ihren zugrunde liegenden Typ.Enumerations have an implicit conversion to Enum and to their underlying type.

Wenn jedes Element in sourceArray eine Umwandlung erfordert (z. B. von einer Basisklasse in einer abgeleiteten Klasse oder von einer Schnittstelle in ein Objekt) und einem oder mehreren Elementen können nicht in den entsprechenden Typ umgewandelt werden destinationArray, InvalidCastException ausgelöst.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.

Wenn diese Methode eine beim Kopieren Ausnahme, des Status der destinationArray ist nicht definiert.If this method throws an exception while copying, the state of destinationArray is undefined.

Diese Methode ist eine O (n)-Vorgang, in denen n ist length.This method is an O(n) operation, where n is length.

Siehe auch

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

Kopiert einen mit dem ersten Element beginnenden Elementbereich eines Array und fügt ihn ab dem ersten Element in ein anderes Array ein.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Die Länge wird als 64-Bit-Ganzzahl angegeben.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)

Parameter

sourceArray
Array Array Array Array

Das Array, das die zu kopierenden Daten enthält.The Array that contains the data to copy.

destinationArray
Array Array Array Array

Das Array, das die Daten empfängt.The Array that receives the data.

length
Int64 Int64 Int64 Int64

Eine 64-Bit-Ganzzahl, die die Anzahl der zu kopierenden Elemente darstellt.A 64-bit integer that represents the number of elements to copy. Die Ganzzahl muss zwischen 0 (null) und einschließlich MaxValue liegen.The integer must be between zero and MaxValue, inclusive.

Ausnahmen

sourceArray ist null.sourceArray is null.

- oder - -or- destinationArray ist null.destinationArray is null.

sourceArray und destinationArray sind von unterschiedlichem Rang.sourceArray and destinationArray have different ranks.

sourceArray und destinationArray weisen inkompatible Typen auf.sourceArray and destinationArray are of incompatible types.

Mindestens ein Element im sourceArray kann nicht in den Typ des destinationArrays umgewandelt werden.At least one element in sourceArray cannot be cast to the type of destinationArray.

length ist kleiner als 0 oder größer als MaxValue.length is less than 0 or greater than MaxValue.

length ist größer als die Anzahl von Elementen in sourceArray.length is greater than the number of elements in sourceArray.

- oder - -or- length ist größer als die Anzahl von Elementen in destinationArray.length is greater than the number of elements in destinationArray.

Hinweise

Die sourceArray und destinationArray -Parameter müssen die gleiche Anzahl von Dimensionen haben.The sourceArray and destinationArray parameters must have the same number of dimensions. Darüber hinaus destinationArray muss bereits haben wurde dimensioniert und muss eine ausreichende Anzahl von Elementen, die die kopierten Daten aufzunehmen.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

Beim Kopieren zwischen mehrdimensionalen Arrays verhält sich das Array wie ein langes eindimensionales Array, in dem die Zeilen (oder Spalten) vom Konzept her End-to-End angeordnet sind.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. Wenn ein Array drei Zeilen (oder Spalten) mit vier Elementen, Kopieren von sechs Elementen vom Anfang des Arrays würde z. B. alle vier Elemente der ersten Zeile (oder Spalte) und die ersten beiden Elemente der zweiten Zeile (oder Spalte) kopieren.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).

Wenn sourceArray und destinationArray überlappen, diese Methode verhält sich wie die ursprünglichen Werte der sourceArray beibehalten wurden, in einen temporären Speicherort vor dem destinationArray wird überschrieben.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++]

Diese Methode entspricht der C/C++-Standardfunktion memmove, nicht memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

Die Arrays können es sich um Verweistyparrays oder Werttypen sein.The arrays can be reference-type arrays or value-type arrays. Eine Umwandlung des Typs ausgeführt wird, nach Bedarf.Type downcasting is performed, as required.

  • Beim Kopieren aus einem Verweistyp-Array in ein Array von Werttyp wird jedes Element mittels Unboxing zurückkonvertiert und kopiert.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Beim Kopieren aus einem Array von Werttyp in einen Verweistyp-Array wird jedes Element mittels Boxing konvertiert und anschließend kopiert.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Beim Kopieren aus einem Verweistyp oder Werttyp-Array eine Object Array, ein Object erstellt, um jeden Wert oder Verweis enthalten ist, und klicken Sie dann kopiert.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. Beim Kopieren aus einer Object Array, das ein Array vom Verweistyp oder Werttyp und die Zuweisung ist nicht möglich, eine InvalidCastException ausgelöst.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Wenn sourceArray und destinationArray Verweistyp-Arrays sind oder Arrays des Typs sind Object, eine flache Kopie wird ausgeführt.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Eine flache Kopie einer Array ist ein neues Array , die Verweise auf die gleichen Elemente wie die ursprüngliche Array.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Die Elemente selbst oder für etwas auf die verwiesen wird durch die Elemente werden nicht kopiert.The elements themselves or anything referenced by the elements are not copied. Im Gegensatz dazu eine tiefe Kopie von einer Array kopiert die Elemente und alles direkt oder indirekt auf die verwiesen wird durch die Elemente.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Ein ArrayTypeMismatchException wird ausgelöst, wenn die Arrays von inkompatiblen Typen sind.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. Typkompatibilität wird wie folgt definiert:Type compatibility is defined as follows:

  • Ein Typ ist kompatibel mit sich selbst.A type is compatible with itself.

  • Ein Werttyp ist kompatibel mit Object und mit einem Schnittstellentyp, der durch diesen Werttyp implementiert.A value type is compatible with Object and with an interface type implemented by that value type. Mit einer Schnittstelle verbunden ist, nur dann, wenn sie diese Schnittstelle direkt implementiert, ist ein Werttyp gilt.A value type is considered connected to an interface only if it implements that interface directly. Nicht verbundene Typen sind nicht kompatibel.Disconnected types are not compatible.

  • Zwei Arten von systeminternen (vordefinierten) Wert sind kompatibel, wenn kopieren aus einer Datenquelle in den Zieltyp eine erweiternde Konvertierung ist.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Nie eine erweiternde Konvertierung verliert Informationen an, während eine einschränkende Konvertierung Informationen verloren gehen kann.A widening conversion never loses information, whereas a narrowing conversion can lose information. Beispielsweise konvertieren eine 32-Bit-Ganzzahl mit Vorzeichen in eine 64-Bit-Ganzzahl mit Vorzeichen eine erweiternde Konvertierung ist, und konvertieren eine 64-Bit-Ganzzahl mit Vorzeichen in eine 32-Bit-Ganzzahl mit Vorzeichen ist eine einschränkende Konvertierung.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. Weitere Informationen über Konvertierungen finden Sie unter Convert.For more information about conversions, see Convert.

  • Ein systeminterner (Benutzerdefiniert) Wert ist nur mit sich selbst kompatibel.A nonintrinsic (user-defined) value type is compatible only with itself.

  • -Enumerationen verfügen über eine implizite Konvertierung in Enum und ihren zugrunde liegenden Typ.Enumerations have an implicit conversion to Enum and to their underlying type.

Wenn jedes Element in sourceArray eine Umwandlung erfordert (z. B. von einer Basisklasse in einer abgeleiteten Klasse oder von einer Schnittstelle in ein Objekt) und einem oder mehreren Elementen können nicht in den entsprechenden Typ umgewandelt werden destinationArray, InvalidCastException ausgelöst.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.

Wenn diese Methode eine beim Kopieren Ausnahme, des Status der destinationArray ist nicht definiert.If this method throws an exception while copying, the state of destinationArray is undefined.

Diese Methode ist eine O (n)-Vorgang, in denen n ist length.This method is an O(n) operation, where n is length.

Siehe auch

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

Kopiert einen mit dem ersten Element beginnenden Elementbereich eines Array und fügt ihn ab dem ersten Element in ein anderes Array ein.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Die Länge wird als 32-Bit-Ganzzahl angegeben.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)

Parameter

sourceArray
Array Array Array Array

Das Array, das die zu kopierenden Daten enthält.The Array that contains the data to copy.

destinationArray
Array Array Array Array

Das Array, das die Daten empfängt.The Array that receives the data.

length
Int32 Int32 Int32 Int32

Eine 32-Bit-Ganzzahl, die die Anzahl der zu kopierenden Elemente darstellt.A 32-bit integer that represents the number of elements to copy.

Ausnahmen

sourceArray ist null.sourceArray is null.

- oder - -or- destinationArray ist null.destinationArray is null.

sourceArray und destinationArray sind von unterschiedlichem Rang.sourceArray and destinationArray have different ranks.

sourceArray und destinationArray weisen inkompatible Typen auf.sourceArray and destinationArray are of incompatible types.

Mindestens ein Element in sourceArray kann nicht in den destinationArray-Typ umgewandelt werden.At least one element in sourceArray cannot be cast to the type of destinationArray.

length ist größer als die Anzahl von Elementen in sourceArray.length is greater than the number of elements in sourceArray.

- oder - -or- length ist größer als die Anzahl von Elementen in destinationArray.length is greater than the number of elements in destinationArray.

Hinweise

Die sourceArray und destinationArray -Parameter müssen die gleiche Anzahl von Dimensionen haben.The sourceArray and destinationArray parameters must have the same number of dimensions. Darüber hinaus destinationArray muss bereits haben wurde dimensioniert und muss eine ausreichende Anzahl von Elementen, die die kopierten Daten aufzunehmen.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

Beim Kopieren zwischen mehrdimensionalen Arrays verhält sich das Array wie ein langes eindimensionales Array, in dem die Zeilen (oder Spalten) vom Konzept her End-to-End angeordnet sind.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. Wenn ein Array drei Zeilen (oder Spalten) mit vier Elementen, Kopieren von sechs Elementen vom Anfang des Arrays würde z. B. alle vier Elemente der ersten Zeile (oder Spalte) und die ersten beiden Elemente der zweiten Zeile (oder Spalte) kopieren.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).

Wenn sourceArray und destinationArray überlappen, diese Methode verhält sich wie die ursprünglichen Werte der sourceArray beibehalten wurden, in einen temporären Speicherort vor dem destinationArray wird überschrieben.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++]

Diese Methode entspricht der C/C++-Standardfunktion memmove, nicht memcpy.This method is equivalent to the standard C/C++ function memmove, not memcpy.

Die Arrays können es sich um Verweistyparrays oder Werttypen sein.The arrays can be reference-type arrays or value-type arrays. Eine Umwandlung des Typs ausgeführt wird, nach Bedarf.Type downcasting is performed, as required.

  • Beim Kopieren aus einem Verweistyp-Array in ein Array von Werttyp wird jedes Element mittels Unboxing zurückkonvertiert und kopiert.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Beim Kopieren aus einem Array von Werttyp in einen Verweistyp-Array wird jedes Element mittels Boxing konvertiert und anschließend kopiert.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Beim Kopieren aus einem Verweistyp oder Werttyp-Array eine Object Array, ein Object erstellt, um jeden Wert oder Verweis enthalten ist, und klicken Sie dann kopiert.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. Beim Kopieren aus einer Object Array, das ein Array vom Verweistyp oder Werttyp und die Zuweisung ist nicht möglich, eine InvalidCastException ausgelöst.When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • Wenn sourceArray und destinationArray Verweistyp-Arrays sind oder Arrays des Typs sind Object, eine flache Kopie wird ausgeführt.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Eine flache Kopie einer Array ist ein neues Array , die Verweise auf die gleichen Elemente wie die ursprüngliche Array.A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Die Elemente selbst oder für etwas auf die verwiesen wird durch die Elemente werden nicht kopiert.The elements themselves or anything referenced by the elements are not copied. Im Gegensatz dazu eine tiefe Kopie von einer Array kopiert die Elemente und alles direkt oder indirekt auf die verwiesen wird durch die Elemente.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

Ein ArrayTypeMismatchException wird ausgelöst, wenn die Arrays von inkompatiblen Typen sind.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. Typkompatibilität wird wie folgt definiert:Type compatibility is defined as follows:

  • Ein Typ ist kompatibel mit sich selbst.A type is compatible with itself.

  • Ein Werttyp ist kompatibel mit Object und mit einem Schnittstellentyp, der durch diesen Werttyp implementiert.A value type is compatible with Object and with an interface type implemented by that value type. Mit einer Schnittstelle verbunden ist, nur dann, wenn sie diese Schnittstelle direkt implementiert, ist ein Werttyp gilt.A value type is considered connected to an interface only if it implements that interface directly. Nicht verbundene Typen sind nicht kompatibel.Disconnected types are not compatible.

  • Zwei Arten von systeminternen (vordefinierten) Wert sind kompatibel, wenn kopieren aus einer Datenquelle in den Zieltyp eine erweiternde Konvertierung ist.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Nie eine erweiternde Konvertierung verliert Informationen an, während eine einschränkende Konvertierung Informationen verloren gehen kann.A widening conversion never loses information, whereas a narrowing conversion can lose information. Beispielsweise konvertieren eine 32-Bit-Ganzzahl mit Vorzeichen in eine 64-Bit-Ganzzahl mit Vorzeichen eine erweiternde Konvertierung ist, und konvertieren eine 64-Bit-Ganzzahl mit Vorzeichen in eine 32-Bit-Ganzzahl mit Vorzeichen ist eine einschränkende Konvertierung.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. Weitere Informationen über Konvertierungen finden Sie unter Convert.For more information about conversions, see Convert.

  • Ein systeminterner (Benutzerdefiniert) Wert ist nur mit sich selbst kompatibel.A nonintrinsic (user-defined) value type is compatible only with itself.

  • -Enumerationen verfügen über eine implizite Konvertierung in Enum und ihren zugrunde liegenden Typ.Enumerations have an implicit conversion to Enum and to their underlying type.

Wenn jedes Element in sourceArray eine Umwandlung erfordert (z. B. von einer Basisklasse in einer abgeleiteten Klasse oder von einer Schnittstelle in ein Objekt) und einem oder mehreren Elementen können nicht in den entsprechenden Typ umgewandelt werden destinationArray, InvalidCastException ausgelöst.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.

Wenn diese Methode eine beim Kopieren Ausnahme, des Status der destinationArray ist nicht definiert.If this method throws an exception while copying, the state of destinationArray is undefined.

Diese Methode ist eine O (n)-Vorgang, in denen n ist length.This method is an O(n) operation, where n is length.

Siehe auch

Gilt für: