Array.Copy Methode

Definitie

Kopieert een reeks elementen in de Array ene naar het andere Array en voert het type cast- en boksen naar behoefte uit.

Overloads

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

Hiermee kopieert u een reeks elementen vanaf een Array begin bij de opgegeven bronindex en plakt u deze in een andere Array , beginnend bij de opgegeven doelindex. De lengte en de indexen worden opgegeven als 64-bits gehele getallen.

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

Hiermee kopieert u een reeks elementen vanaf een Array begin bij de opgegeven bronindex en plakt u deze in een andere Array , beginnend bij de opgegeven doelindex. De lengte en de indexen worden opgegeven als 32-bits gehele getallen.

Copy(Array, Array, Int32)

Kopieert een reeks elementen vanaf een Array begin bij het eerste element en plakt deze in een ander Array , beginnend bij het eerste element. De lengte wordt opgegeven als een 32-bits geheel getal.

Copy(Array, Array, Int64)

Kopieert een reeks elementen vanaf een Array begin bij het eerste element en plakt deze in een ander Array , beginnend bij het eerste element. De lengte wordt opgegeven als een 64-bits geheel getal.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u van het Array ene type Object naar het andere Array type geheel getal kopieert.

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)

Bron:
Array.cs
Bron:
Array.cs
Bron:
Array.cs
Bron:
Array.cs
Bron:
Array.cs

Hiermee kopieert u een reeks elementen vanaf een Array begin bij de opgegeven bronindex en plakt u deze in een andere Array , beginnend bij de opgegeven doelindex. De lengte en de indexen worden opgegeven als 64-bits gehele getallen.

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)

Parameters

sourceArray
Array

De Array gegevens die moeten worden gekopieerd.

sourceIndex
Int64

Een 64-bits geheel getal dat de index sourceArray vertegenwoordigt waarin kopiëren begint.

destinationArray
Array

De Array gegevens worden ontvangen.

destinationIndex
Int64

Een 64-bits geheel getal dat de index destinationArray aangeeft waarin de opslag begint.

length
Int64

Een 64-bits geheel getal dat het aantal elementen aangeeft dat moet worden gekopieerd. Het gehele getal moet liggen tussen nul en Int32.MaxValue, inclusief.

Uitzonderingen

sourceArray is null.

– of –

destinationArray is null.

sourceArray en destinationArray verschillende rangschikkingen hebben.

sourceArray en destinationArray zijn van niet-compatibele typen.

Ten minste één element kan sourceArray niet worden omgezet in het type destinationArray.

sourceIndex valt buiten het bereik van geldige indexen voor de sourceArray.

– of –

destinationIndex valt buiten het bereik van geldige indexen voor de destinationArray.

– of –

length is kleiner dan 0 of hoger dan Int32.MaxValue.

length is groter dan het aantal elementen van sourceIndex tot het einde van sourceArray.

– of –

length is groter dan het aantal elementen van destinationIndex tot het einde van destinationArray.

Opmerkingen

De sourceArray parameters moeten destinationArray hetzelfde aantal dimensies hebben. Bovendien destinationArray moet al zijn gedimensioneerd en moet er voldoende elementen zijn die beginnen vanaf de destinationIndex positie om de gekopieerde gegevens te kunnen verwerken.

Wanneer u kopieert tussen multidimensionale matrices, gedraagt de matrix zich als een lange eendimensionale matrix, waarbij de rijen (of kolommen) conceptueel end-to-end worden gelegd. Als een matrix bijvoorbeeld drie rijen (of kolommen) met elk vier elementen heeft, kopieert u zes elementen vanaf het begin van de matrix alle vier de elementen van de eerste rij (of kolom) en de eerste twee elementen van de tweede rij (of kolom). Als u wilt beginnen met kopiëren vanaf het tweede element van de derde rij (of kolom), sourceIndex moet de bovengrens van de eerste rij (of kolom) plus de lengte van de tweede rij (of kolom) plus twee zijn.

Als sourceArray en destinationArray overlappen, gedraagt deze methode zich alsof de oorspronkelijke waarden van sourceArray een tijdelijke locatie bewaard blijven voordat destinationArray ze worden overschreven.

[C++]

Deze methode is gelijk aan de standaardfunctie memmoveC/C++, niet memcpy.

De matrices kunnen verwijzingstypematrices of waardetypematrices zijn. Type downcasting wordt uitgevoerd, zoals vereist.

  • Bij het kopiëren van een matrix met verwijzingstypen naar een matrix van het waardetype, wordt elk element uitgepakt en vervolgens gekopieerd. Bij het kopiëren van een matrix van het waardetype naar een verwijzingstypematrix, wordt elk element in een vak geplaatst en vervolgens gekopieerd.

  • Wanneer u kopieert van een verwijzings- of waardetypematrix naar een Object matrix, wordt er een Object gemaakt waarin elke waarde of verwijzing wordt opgeslagen en vervolgens wordt gekopieerd. Bij het kopiëren van een Object matrix naar een verwijzings- of waardetypematrix en de toewijzing niet mogelijk is, wordt er een InvalidCastException gegenereerd.

  • Als sourceArray en destinationArray beide verwijzingstypematrices zijn of beide matrices van het type Objectzijn, wordt een ondiepe kopie uitgevoerd. Een ondiepe kopie van een is Array een nieuwe Array met verwijzingen naar dezelfde elementen als het origineel Array. De elementen zelf of iets waarnaar wordt verwezen door de elementen worden niet gekopieerd. Daarentegen kopieert een diepe kopie van een Array kopie de elementen en alles direct of indirect waarnaar wordt verwezen door de elementen.

Er ArrayTypeMismatchException wordt een gegenereerd als de matrices van niet-compatibele typen zijn. Typecompatibiliteit wordt als volgt gedefinieerd:

  • Een type is compatibel met zichzelf.

  • Een waardetype is compatibel met Object en met een interfacetype dat door dat waardetype is geïmplementeerd. Een waardetype wordt alleen als verbonden met een interface beschouwd als deze rechtstreeks die interface implementeert. Niet-verbonden typen zijn niet compatibel.

  • Twee intrinsieke (vooraf gedefinieerde) waardetypen zijn compatibel als kopiëren van het brontype naar het doeltype een widening conversie is. Een verbrekingsconversie verliest nooit informatie, terwijl een vermalende conversie informatie kan verliezen. Het converteren van een 32-bits ondertekend geheel getal naar een 64-bits ondertekend geheel getal is bijvoorbeeld een brede conversie en het converteren van een 64-bits ondertekend geheel getal naar een 32-bits ondertekend geheel getal is een beperkte conversie. Zie voor meer informatie over conversies Convert.

  • Een niet-intrinsisch waardetype (door de gebruiker gedefinieerd) is alleen compatibel met zichzelf.

  • Opsommingen hebben een impliciete conversie naar Enum en naar het onderliggende type.

Als elk element in sourceArray een object een downcast vereist (bijvoorbeeld van een basisklasse naar een afgeleide klasse of van een interface naar een object) en een of meer elementen niet naar het bijbehorende type kunnen destinationArrayworden gegooid, wordt er een InvalidCastException gegenereerd.

Als deze methode een uitzondering genereert tijdens het kopiëren, is de status destinationArray niet gedefinieerd.

Deze methode is een O(n)-bewerking, waarbij n .length

Zie ook

Van toepassing op

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

Bron:
Array.cs
Bron:
Array.cs
Bron:
Array.CoreCLR.cs
Bron:
Array.cs
Bron:
Array.cs

Hiermee kopieert u een reeks elementen vanaf een Array begin bij de opgegeven bronindex en plakt u deze in een andere Array , beginnend bij de opgegeven doelindex. De lengte en de indexen worden opgegeven als 32-bits gehele getallen.

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)

Parameters

sourceArray
Array

De Array gegevens die moeten worden gekopieerd.

sourceIndex
Int32

Een 32-bits geheel getal dat de index sourceArray vertegenwoordigt waarin het kopiëren begint.

destinationArray
Array

De Array gegevens worden ontvangen.

destinationIndex
Int32

Een 32-bits geheel getal dat de index destinationArray aangeeft waarin de opslag begint.

length
Int32

Een 32-bits geheel getal dat het aantal elementen aangeeft dat moet worden gekopieerd.

Uitzonderingen

sourceArray is null.

– of –

destinationArray is null.

sourceArray en destinationArray verschillende rangschikkingen hebben.

sourceArray en destinationArray zijn van niet-compatibele typen.

Ten minste één element kan sourceArray niet worden omgezet in het type destinationArray.

sourceIndex is kleiner dan de ondergrens van de eerste dimensie van sourceArray.

– of –

destinationIndex is kleiner dan de ondergrens van de eerste dimensie van destinationArray.

– of –

length is kleiner dan nul.

length is groter dan het aantal elementen van sourceIndex tot het einde van sourceArray.

– of –

length is groter dan het aantal elementen van destinationIndex tot het einde van destinationArray.

Opmerkingen

De sourceArray parameters moeten destinationArray hetzelfde aantal dimensies hebben. Bovendien destinationArray moet al zijn gedimensioneerd en moet er voldoende elementen zijn die beginnen vanaf de destinationIndex positie om de gekopieerde gegevens te kunnen verwerken.

Wanneer u kopieert tussen multidimensionale matrices, gedraagt de matrix zich als een lange eendimensionale matrix, waarbij de rijen (of kolommen) conceptueel end-to-end worden gelegd. Als een matrix bijvoorbeeld drie rijen (of kolommen) met elk vier elementen heeft, kopieert u zes elementen vanaf het begin van de matrix alle vier de elementen van de eerste rij (of kolom) en de eerste twee elementen van de tweede rij (of kolom). Als u wilt beginnen met kopiëren vanaf het tweede element van de derde rij (of kolom), sourceIndex moet de bovengrens van de eerste rij (of kolom) plus de lengte van de tweede rij (of kolom) plus twee zijn.

Als sourceArray en destinationArray overlappen, gedraagt deze methode zich alsof de oorspronkelijke waarden van sourceArray een tijdelijke locatie bewaard blijven voordat destinationArray ze worden overschreven.

[C++]

Deze methode is gelijk aan de standaardfunctie memmoveC/C++, niet memcpy.

De matrices kunnen verwijzingstypematrices of waardetypematrices zijn. Type downcasting wordt uitgevoerd, zoals vereist.

  • Bij het kopiëren van een matrix met verwijzingstypen naar een matrix van het waardetype, wordt elk element uitgepakt en vervolgens gekopieerd. Bij het kopiëren van een matrix van het waardetype naar een verwijzingstypematrix, wordt elk element in een vak geplaatst en vervolgens gekopieerd.

  • Wanneer u kopieert van een verwijzings- of waardetypematrix naar een Object matrix, wordt er een Object gemaakt waarin elke waarde of verwijzing wordt opgeslagen en vervolgens wordt gekopieerd. Bij het kopiëren van een Object matrix naar een verwijzings- of waardetypematrix en de toewijzing niet mogelijk is, wordt er een InvalidCastException gegenereerd.

  • Als sourceArray en destinationArray beide verwijzingstypematrices zijn of beide matrices van het type Objectzijn, wordt een ondiepe kopie uitgevoerd. Een ondiepe kopie van een is Array een nieuwe Array met verwijzingen naar dezelfde elementen als het origineel Array. De elementen zelf of iets waarnaar wordt verwezen door de elementen worden niet gekopieerd. Daarentegen kopieert een diepe kopie van een Array kopie de elementen en alles direct of indirect waarnaar wordt verwezen door de elementen.

Er ArrayTypeMismatchException wordt een gegenereerd als de matrices van niet-compatibele typen zijn. Typecompatibiliteit wordt als volgt gedefinieerd:

  • Een type is compatibel met zichzelf.

  • Een waardetype is compatibel met Object en met een interfacetype dat door dat waardetype is geïmplementeerd. Een waardetype wordt alleen als verbonden met een interface beschouwd als deze rechtstreeks die interface implementeert. Niet-verbonden typen zijn niet compatibel.

  • Twee intrinsieke (vooraf gedefinieerde) waardetypen zijn compatibel als kopiëren van het brontype naar het doeltype een widening conversie is. Een verbrekingsconversie verliest nooit informatie, terwijl een vermalende conversie informatie kan verliezen. Het converteren van een 32-bits ondertekend geheel getal naar een 64-bits ondertekend geheel getal is bijvoorbeeld een brede conversie en het converteren van een 64-bits ondertekend geheel getal naar een 32-bits ondertekend geheel getal is een beperkte conversie. Zie voor meer informatie over conversies Convert.

  • Een niet-intrinsisch waardetype (door de gebruiker gedefinieerd) is alleen compatibel met zichzelf.

  • Opsommingen hebben een impliciete conversie naar Enum en naar het onderliggende type.

Als elk element in sourceArray een object een downcast vereist (bijvoorbeeld van een basisklasse naar een afgeleide klasse of van een interface naar een object) en een of meer elementen niet naar het bijbehorende type kunnen destinationArrayworden gegooid, wordt er een InvalidCastException gegenereerd.

Als deze methode een uitzondering genereert tijdens het kopiëren, is de status destinationArray niet gedefinieerd.

Deze methode is een O(n)-bewerking, waarbij n .length

Zie ook

Van toepassing op

Copy(Array, Array, Int32)

Bron:
Array.cs
Bron:
Array.cs
Bron:
Array.CoreCLR.cs
Bron:
Array.cs
Bron:
Array.cs

Kopieert een reeks elementen vanaf een Array begin bij het eerste element en plakt deze in een ander Array , beginnend bij het eerste element. De lengte wordt opgegeven als een 32-bits geheel getal.

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)

Parameters

sourceArray
Array

De Array gegevens die moeten worden gekopieerd.

destinationArray
Array

De Array gegevens worden ontvangen.

length
Int32

Een 32-bits geheel getal dat het aantal elementen aangeeft dat moet worden gekopieerd.

Uitzonderingen

sourceArray is null.

– of –

destinationArray is null.

sourceArray en destinationArray verschillende rangschikkingen hebben.

sourceArray en destinationArray zijn van niet-compatibele typen.

Ten minste één element kan sourceArray niet worden omgezet in het type destinationArray.

length is kleiner dan nul.

length groter is dan het aantal elementen in sourceArray.

– of –

length groter is dan het aantal elementen in destinationArray.

Opmerkingen

De sourceArray parameters moeten destinationArray hetzelfde aantal dimensies hebben. Bovendien destinationArray moet er al een dimensie zijn en moet er voldoende elementen zijn om ruimte te bieden aan de gekopieerde gegevens.

Bij het kopiëren tussen multidimensionale matrices gedraagt de matrix zich als een lange eendimensionale matrix, waarbij de rijen (of kolommen) conceptueel aan het einde worden gelegd. Als een matrix bijvoorbeeld drie rijen (of kolommen) met elk vier elementen heeft, kopieert u zes elementen vanaf het begin van de matrix alle vier de elementen van de eerste rij (of kolom) en de eerste twee elementen van de tweede rij (of kolom).

Als sourceArray en destinationArray overlappen, gedraagt deze methode zich alsof de oorspronkelijke waarden van sourceArray een tijdelijke locatie bewaard blijven voordat destinationArray ze worden overschreven.

[C++]

Deze methode is gelijk aan de standaardfunctie memmoveC/C++, niet memcpy.

De matrices kunnen verwijzingstypematrices of waardetypematrices zijn. Type downcasting wordt uitgevoerd, zoals vereist.

  • Bij het kopiëren van een matrix met verwijzingstypen naar een matrix van het waardetype, wordt elk element uitgepakt en vervolgens gekopieerd. Bij het kopiëren van een matrix van het waardetype naar een verwijzingstypematrix, wordt elk element in een vak geplaatst en vervolgens gekopieerd.

  • Wanneer u kopieert van een verwijzings- of waardetypematrix naar een Object matrix, wordt er een Object gemaakt waarin elke waarde of verwijzing wordt opgeslagen en vervolgens wordt gekopieerd. Bij het kopiëren van een Object matrix naar een verwijzings- of waardetypematrix en de toewijzing niet mogelijk is, wordt er een InvalidCastException gegenereerd.

  • Als sourceArray en destinationArray beide verwijzingstypematrices zijn of beide matrices van het type Objectzijn, wordt een ondiepe kopie uitgevoerd. Een ondiepe kopie van een is Array een nieuwe Array met verwijzingen naar dezelfde elementen als het origineel Array. De elementen zelf of iets waarnaar wordt verwezen door de elementen worden niet gekopieerd. Daarentegen kopieert een diepe kopie van een Array kopie de elementen en alles direct of indirect waarnaar wordt verwezen door de elementen.

Er ArrayTypeMismatchException wordt een gegenereerd als de matrices van niet-compatibele typen zijn. Typecompatibiliteit wordt als volgt gedefinieerd:

  • Een type is compatibel met zichzelf.

  • Een waardetype is compatibel met Object en met een interfacetype dat door dat waardetype is geïmplementeerd. Een waardetype wordt alleen als verbonden met een interface beschouwd als deze rechtstreeks die interface implementeert. Niet-verbonden typen zijn niet compatibel.

  • Twee intrinsieke (vooraf gedefinieerde) waardetypen zijn compatibel als kopiëren van het brontype naar het doeltype een widening conversie is. Een verbrekingsconversie verliest nooit informatie, terwijl een vermalende conversie informatie kan verliezen. Het converteren van een 32-bits ondertekend geheel getal naar een 64-bits ondertekend geheel getal is bijvoorbeeld een brede conversie en het converteren van een 64-bits ondertekend geheel getal naar een 32-bits ondertekend geheel getal is een beperkte conversie. Zie voor meer informatie over conversies Convert.

  • Een niet-intrinsisch waardetype (door de gebruiker gedefinieerd) is alleen compatibel met zichzelf.

  • Opsommingen hebben een impliciete conversie naar Enum en naar het onderliggende type.

Als elk element in sourceArray een object een downcast vereist (bijvoorbeeld van een basisklasse naar een afgeleide klasse of van een interface naar een object) en een of meer elementen niet naar het bijbehorende type kunnen destinationArrayworden gegooid, wordt er een InvalidCastException gegenereerd.

Als deze methode een uitzondering genereert tijdens het kopiëren, is de status destinationArray niet gedefinieerd.

Deze methode is een O(n)-bewerking, waarbij n .length

Zie ook

Van toepassing op

Copy(Array, Array, Int64)

Bron:
Array.cs
Bron:
Array.cs
Bron:
Array.cs
Bron:
Array.cs
Bron:
Array.cs

Kopieert een reeks elementen vanaf een Array begin bij het eerste element en plakt deze in een ander Array , beginnend bij het eerste element. De lengte wordt opgegeven als een 64-bits geheel getal.

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)

Parameters

sourceArray
Array

De Array gegevens die moeten worden gekopieerd.

destinationArray
Array

De Array gegevens worden ontvangen.

length
Int64

Een 64-bits geheel getal dat het aantal elementen aangeeft dat moet worden gekopieerd. Het gehele getal moet liggen tussen nul en Int32.MaxValue, inclusief.

Uitzonderingen

sourceArray is null.

– of –

destinationArray is null.

sourceArray en destinationArray verschillende rangschikkingen hebben.

sourceArray en destinationArray zijn van niet-compatibele typen.

Ten minste één element kan sourceArray niet worden omgezet in het type destinationArray.

length is kleiner dan 0 of hoger dan Int32.MaxValue.

length groter is dan het aantal elementen in sourceArray.

– of –

length groter is dan het aantal elementen in destinationArray.

Opmerkingen

De sourceArray parameters moeten destinationArray hetzelfde aantal dimensies hebben. Bovendien destinationArray moet er al een dimensie zijn en moet er voldoende elementen zijn om ruimte te bieden aan de gekopieerde gegevens.

Bij het kopiëren tussen multidimensionale matrices gedraagt de matrix zich als een lange eendimensionale matrix, waarbij de rijen (of kolommen) conceptueel aan het einde worden gelegd. Als een matrix bijvoorbeeld drie rijen (of kolommen) met elk vier elementen heeft, kopieert u zes elementen vanaf het begin van de matrix alle vier de elementen van de eerste rij (of kolom) en de eerste twee elementen van de tweede rij (of kolom).

Als sourceArray en destinationArray overlappen, gedraagt deze methode zich alsof de oorspronkelijke waarden van sourceArray een tijdelijke locatie bewaard blijven voordat destinationArray ze worden overschreven.

[C++]

Deze methode is gelijk aan de standaardfunctie memmoveC/C++, niet memcpy.

De matrices kunnen verwijzingstypematrices of waardetypematrices zijn. Type downcasting wordt uitgevoerd, zoals vereist.

  • Bij het kopiëren van een matrix met verwijzingstypen naar een matrix van het waardetype, wordt elk element uitgepakt en vervolgens gekopieerd. Bij het kopiëren van een matrix van het waardetype naar een verwijzingstypematrix, wordt elk element in een vak geplaatst en vervolgens gekopieerd.

  • Wanneer u kopieert van een verwijzings- of waardetypematrix naar een Object matrix, wordt er een Object gemaakt waarin elke waarde of verwijzing wordt opgeslagen en vervolgens wordt gekopieerd. Bij het kopiëren van een Object matrix naar een verwijzings- of waardetypematrix en de toewijzing niet mogelijk is, wordt er een InvalidCastException gegenereerd.

  • Als sourceArray en destinationArray beide verwijzingstypematrices zijn of beide matrices van het type Objectzijn, wordt een ondiepe kopie uitgevoerd. Een ondiepe kopie van een is Array een nieuwe Array met verwijzingen naar dezelfde elementen als het origineel Array. De elementen zelf of iets waarnaar wordt verwezen door de elementen worden niet gekopieerd. Daarentegen kopieert een diepe kopie van een Array kopie de elementen en alles direct of indirect waarnaar wordt verwezen door de elementen.

Er ArrayTypeMismatchException wordt een gegenereerd als de matrices van niet-compatibele typen zijn. Typecompatibiliteit wordt als volgt gedefinieerd:

  • Een type is compatibel met zichzelf.

  • Een waardetype is compatibel met Object en met een interfacetype dat door dat waardetype is geïmplementeerd. Een waardetype wordt alleen als verbonden met een interface beschouwd als deze rechtstreeks die interface implementeert. Niet-verbonden typen zijn niet compatibel.

  • Twee intrinsieke (vooraf gedefinieerde) waardetypen zijn compatibel als kopiëren van het brontype naar het doeltype een widening conversie is. Een verbrekingsconversie verliest nooit informatie, terwijl een vermalende conversie informatie kan verliezen. Het converteren van een 32-bits ondertekend geheel getal naar een 64-bits ondertekend geheel getal is bijvoorbeeld een brede conversie en het converteren van een 64-bits ondertekend geheel getal naar een 32-bits ondertekend geheel getal is een beperkte conversie. Zie voor meer informatie over conversies Convert.

  • Een niet-intrinsisch waardetype (door de gebruiker gedefinieerd) is alleen compatibel met zichzelf.

  • Opsommingen hebben een impliciete conversie naar Enum en naar het onderliggende type.

Als elk element in sourceArray een object een downcast vereist (bijvoorbeeld van een basisklasse naar een afgeleide klasse of van een interface naar een object) en een of meer elementen niet naar het bijbehorende type kunnen destinationArrayworden gegooid, wordt er een InvalidCastException gegenereerd.

Als deze methode een uitzondering genereert tijdens het kopiëren, is de status destinationArray niet gedefinieerd.

Deze methode is een O(n)-bewerking, waarbij n .length

Zie ook

Van toepassing op