Array.Copy Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
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
- sourceIndex
- Int64
Een 64-bits geheel getal dat de index sourceArray vertegenwoordigt waarin kopiëren begint.
- 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 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
sourceArrayendestinationArraybeide 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
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
- sourceIndex
- Int32
Een 32-bits geheel getal dat de index sourceArray vertegenwoordigt waarin het kopiëren begint.
- 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 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
sourceArrayendestinationArraybeide 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
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
- length
- Int32
Een 32-bits geheel getal dat het aantal elementen aangeeft dat moet worden gekopieerd.
Uitzonderingen
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
sourceArrayendestinationArraybeide 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
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
- 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 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
sourceArrayendestinationArraybeide 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