Array.Copy Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Överlagringar
| Name | Description |
|---|---|
| Copy(Array, Int64, Array, Int64, Int64) |
Kopierar ett område med element från en Array start vid det angivna källindexet och klistrar in dem till ett annat Array med början i det angivna målindexet. Längden och indexen anges som 64-bitars heltal. |
| Copy(Array, Int32, Array, Int32, Int32) |
Kopierar ett område med element från en Array start vid det angivna källindexet och klistrar in dem till ett annat Array med början i det angivna målindexet. Längden och indexen anges som 32-bitars heltal. |
| Copy(Array, Array, Int32) |
Kopierar ett område med element från en Array start vid det första elementet och klistrar in dem i ett annat Array med början vid det första elementet. Längden anges som ett 32-bitars heltal. |
| Copy(Array, Array, Int64) |
Kopierar ett område med element från en Array start vid det första elementet och klistrar in dem i ett annat Array med början vid det första elementet. Längden anges som ett 64-bitars heltal. |
Exempel
I följande kodexempel visas hur du kopierar från en av typen Array till ett Object annat Array av typen heltal.
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)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- 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)
Parametrar
- sourceIndex
- Int64
Ett 64-bitars heltal som representerar indexet där sourceArray kopieringen börjar.
- destinationIndex
- Int64
Ett 64-bitars heltal som representerar indexet där destinationArray lagringen börjar.
- length
- Int64
Ett 64-bitars heltal som representerar antalet element som ska kopieras. Heltalet måste vara mellan noll och Int32.MaxValue, inklusive.
Undantag
sourceArray och destinationArray har olika rangordningar.
sourceArray och destinationArray är av inkompatibla typer.
Minst ett element i sourceArray kan inte omvandlas till typen destinationArray.
sourceIndex ligger utanför intervallet för giltiga index för sourceArray.
-eller-
destinationIndex ligger utanför intervallet för giltiga index för destinationArray.
-eller-
length är mindre än 0 eller större än Int32.MaxValue.
length är större än antalet element från sourceIndex till slutet av sourceArray.
-eller-
length är större än antalet element från destinationIndex till slutet av destinationArray.
Kommentarer
Parametrarna sourceArray och destinationArray måste ha samma antal dimensioner. Dessutom destinationArray måste redan ha dimensionerats och måste ha ett tillräckligt antal element som börjar från destinationIndex positionen för att rymma de kopierade data.
När du kopierar mellan flerdimensionella matriser fungerar matrisen som en lång endimensionell matris, där raderna (eller kolumnerna) konceptmässigt läggs från slutpunkt till slutpunkt. Om en matris till exempel har tre rader (eller kolumner) med fyra element var kopierar du sex element från början av matrisen och kopierar alla fyra elementen i den första raden (eller kolumnen) och de två första elementen i den andra raden (eller kolumnen). Om du vill börja kopiera från det andra elementet i den tredje raden (eller kolumnen) sourceIndex måste du vara den övre gränsen för den första raden (eller kolumnen) plus längden på den andra raden (eller kolumnen) plus två.
Om sourceArray och destinationArray överlappar fungerar den här metoden som om de ursprungliga värdena sourceArray för bevarades på en tillfällig plats innan destinationArray den skrevs över.
[C++]
Den här metoden motsvarar C/C++-standardfunktionen memmove, inte memcpy.
Matriserna kan vara matriser av referenstyp eller matriser av värdetyp. Nedcasting av typ utförs efter behov.
När du kopierar från en matris av referenstyp till en matris av värdetyp tas varje element bort och kopieras sedan. När du kopierar från en matris av värdetyp till en matris av referenstyp, boxas varje element och kopieras sedan.
När du kopierar från en matris av referenstyp eller värdetyp till en Object matris skapas en Object för att lagra varje värde eller referens och kopieras sedan. När du kopierar från en Object matris till en matris av referenstyp eller värdetyp och tilldelningen inte är möjlig genereras en InvalidCastException .
Om
sourceArrayochdestinationArrayär båda matriser av referenstyp eller båda matriserna av typen Objectutförs en ytlig kopia. En ytlig kopia av en Array är en ny Array som innehåller referenser till samma element som det ursprungliga Array. Elementen själva eller något som refereras till av elementen kopieras inte. Däremot kopierar en djup kopia av ett Array element och allt som refereras direkt eller indirekt av elementen.
En ArrayTypeMismatchException genereras om matriserna är av inkompatibla typer. Typkompatibilitet definieras på följande sätt:
En typ är kompatibel med sig själv.
En värdetyp är kompatibel med Object och med en gränssnittstyp som implementeras av den värdetypen. En värdetyp anses endast vara ansluten till ett gränssnitt om den implementerar gränssnittet direkt. Frånkopplade typer är inte kompatibla.
Två inbyggda (fördefinierade) värdetyper är kompatibla om kopiering från källtypen till måltypen är en bredare konvertering. En bredare konvertering förlorar aldrig information, medan en begränsad konvertering kan förlora information. Till exempel är konvertering av ett 32-bitars signerat heltal till ett 64-bitars signerat heltal en bredare konvertering, och konvertering av ett 64-bitars signerat heltal till ett 32-bitars signerat heltal är en begränsad konvertering. Mer information om konverteringar finns i Convert.
En icke-intrinsisk (användardefinierad) värdetyp är endast kompatibel med sig själv.
Uppräkningar har en implicit konvertering till Enum och till deras underliggande typ.
Om varje element i sourceArray kräver en nedslagen (till exempel från en basklass till en härledd klass eller från ett gränssnitt till ett objekt) och ett eller flera element inte kan gjutas till motsvarande typ i destinationArray, genereras ett InvalidCastException .
Om den här metoden utlöser ett undantag vid kopiering är tillståndet destinationArray för odefinierat.
Den här metoden är en O()-nåtgärd, där n är length.
Se även
Gäller för
Copy(Array, Int32, Array, Int32, Int32)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.CoreCLR.cs
- Källa:
- Array.cs
- Källa:
- 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)
Parametrar
- sourceIndex
- Int32
Ett 32-bitars heltal som representerar indexet där sourceArray kopieringen börjar.
- destinationIndex
- Int32
Ett 32-bitars heltal som representerar indexet där destinationArray lagringen börjar.
- length
- Int32
Ett 32-bitars heltal som representerar antalet element som ska kopieras.
Undantag
sourceArray och destinationArray har olika rangordningar.
sourceArray och destinationArray är av inkompatibla typer.
Minst ett element i sourceArray kan inte omvandlas till typen destinationArray.
sourceIndex är mindre än den nedre gränsen för den första dimensionen av sourceArray.
-eller-
destinationIndex är mindre än den nedre gränsen för den första dimensionen av destinationArray.
-eller-
length är mindre än noll.
length är större än antalet element från sourceIndex till slutet av sourceArray.
-eller-
length är större än antalet element från destinationIndex till slutet av destinationArray.
Kommentarer
Parametrarna sourceArray och destinationArray måste ha samma antal dimensioner. Dessutom destinationArray måste redan ha dimensionerats och måste ha ett tillräckligt antal element som börjar från destinationIndex positionen för att rymma de kopierade data.
När du kopierar mellan flerdimensionella matriser fungerar matrisen som en lång endimensionell matris, där raderna (eller kolumnerna) konceptmässigt läggs från slutpunkt till slutpunkt. Om en matris till exempel har tre rader (eller kolumner) med fyra element var kopierar du sex element från början av matrisen och kopierar alla fyra elementen i den första raden (eller kolumnen) och de två första elementen i den andra raden (eller kolumnen). Om du vill börja kopiera från det andra elementet i den tredje raden (eller kolumnen) sourceIndex måste du vara den övre gränsen för den första raden (eller kolumnen) plus längden på den andra raden (eller kolumnen) plus två.
Om sourceArray och destinationArray överlappar fungerar den här metoden som om de ursprungliga värdena sourceArray för bevarades på en tillfällig plats innan destinationArray den skrevs över.
[C++]
Den här metoden motsvarar C/C++-standardfunktionen memmove, inte memcpy.
Matriserna kan vara matriser av referenstyp eller matriser av värdetyp. Nedcasting av typ utförs efter behov.
När du kopierar från en matris av referenstyp till en matris av värdetyp tas varje element bort och kopieras sedan. När du kopierar från en matris av värdetyp till en matris av referenstyp, boxas varje element och kopieras sedan.
När du kopierar från en matris av referenstyp eller värdetyp till en Object matris skapas en Object för att lagra varje värde eller referens och kopieras sedan. När du kopierar från en Object matris till en matris av referenstyp eller värdetyp och tilldelningen inte är möjlig genereras en InvalidCastException .
Om
sourceArrayochdestinationArrayär båda matriser av referenstyp eller båda matriserna av typen Objectutförs en ytlig kopia. En ytlig kopia av en Array är en ny Array som innehåller referenser till samma element som det ursprungliga Array. Elementen själva eller något som refereras till av elementen kopieras inte. Däremot kopierar en djup kopia av ett Array element och allt som refereras direkt eller indirekt av elementen.
En ArrayTypeMismatchException genereras om matriserna är av inkompatibla typer. Typkompatibilitet definieras på följande sätt:
En typ är kompatibel med sig själv.
En värdetyp är kompatibel med Object och med en gränssnittstyp som implementeras av den värdetypen. En värdetyp anses endast vara ansluten till ett gränssnitt om den implementerar gränssnittet direkt. Frånkopplade typer är inte kompatibla.
Två inbyggda (fördefinierade) värdetyper är kompatibla om kopiering från källtypen till måltypen är en bredare konvertering. En bredare konvertering förlorar aldrig information, medan en begränsad konvertering kan förlora information. Till exempel är konvertering av ett 32-bitars signerat heltal till ett 64-bitars signerat heltal en bredare konvertering, och konvertering av ett 64-bitars signerat heltal till ett 32-bitars signerat heltal är en begränsad konvertering. Mer information om konverteringar finns i Convert.
En icke-intrinsisk (användardefinierad) värdetyp är endast kompatibel med sig själv.
Uppräkningar har en implicit konvertering till Enum och till deras underliggande typ.
Om varje element i sourceArray kräver en nedslagen (till exempel från en basklass till en härledd klass eller från ett gränssnitt till ett objekt) och ett eller flera element inte kan gjutas till motsvarande typ i destinationArray, genereras ett InvalidCastException .
Om den här metoden utlöser ett undantag vid kopiering är tillståndet destinationArray för odefinierat.
Den här metoden är en O()-nåtgärd, där n är length.
Se även
Gäller för
Copy(Array, Array, Int32)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.CoreCLR.cs
- Källa:
- Array.cs
- Källa:
- 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)
Parametrar
- length
- Int32
Ett 32-bitars heltal som representerar antalet element som ska kopieras.
Undantag
sourceArray och destinationArray har olika rangordningar.
sourceArray och destinationArray är av inkompatibla typer.
Minst ett element i sourceArray kan inte omvandlas till typen destinationArray.
length är mindre än noll.
length är större än antalet element i sourceArray.
-eller-
length är större än antalet element i destinationArray.
Kommentarer
Parametrarna sourceArray och destinationArray måste ha samma antal dimensioner. Dessutom destinationArray måste redan ha dimensionerats och måste ha ett tillräckligt antal element för att rymma de kopierade data.
När du kopierar mellan flerdimensionella matriser fungerar matrisen som en lång endimensionell matris, där raderna (eller kolumnerna) konceptmässigt läggs från slutpunkt till slutpunkt. Om en matris till exempel har tre rader (eller kolumner) med fyra element var kopierar du sex element från början av matrisen och kopierar alla fyra elementen i den första raden (eller kolumnen) och de två första elementen i den andra raden (eller kolumnen).
Om sourceArray och destinationArray överlappar fungerar den här metoden som om de ursprungliga värdena sourceArray för bevarades på en tillfällig plats innan destinationArray den skrevs över.
[C++]
Den här metoden motsvarar C/C++-standardfunktionen memmove, inte memcpy.
Matriserna kan vara matriser av referenstyp eller matriser av värdetyp. Nedcasting av typ utförs efter behov.
När du kopierar från en matris av referenstyp till en matris av värdetyp tas varje element bort och kopieras sedan. När du kopierar från en matris av värdetyp till en matris av referenstyp, boxas varje element och kopieras sedan.
När du kopierar från en matris av referenstyp eller värdetyp till en Object matris skapas en Object för att lagra varje värde eller referens och kopieras sedan. När du kopierar från en Object matris till en matris av referenstyp eller värdetyp och tilldelningen inte är möjlig genereras en InvalidCastException .
Om
sourceArrayochdestinationArrayär båda matriser av referenstyp eller båda matriserna av typen Objectutförs en ytlig kopia. En ytlig kopia av en Array är en ny Array som innehåller referenser till samma element som det ursprungliga Array. Elementen själva eller något som refereras till av elementen kopieras inte. Däremot kopierar en djup kopia av ett Array element och allt som refereras direkt eller indirekt av elementen.
En ArrayTypeMismatchException genereras om matriserna är av inkompatibla typer. Typkompatibilitet definieras på följande sätt:
En typ är kompatibel med sig själv.
En värdetyp är kompatibel med Object och med en gränssnittstyp som implementeras av den värdetypen. En värdetyp anses endast vara ansluten till ett gränssnitt om den implementerar gränssnittet direkt. Frånkopplade typer är inte kompatibla.
Två inbyggda (fördefinierade) värdetyper är kompatibla om kopiering från källtypen till måltypen är en bredare konvertering. En bredare konvertering förlorar aldrig information, medan en begränsad konvertering kan förlora information. Till exempel är konvertering av ett 32-bitars signerat heltal till ett 64-bitars signerat heltal en bredare konvertering, och konvertering av ett 64-bitars signerat heltal till ett 32-bitars signerat heltal är en begränsad konvertering. Mer information om konverteringar finns i Convert.
En icke-intrinsisk (användardefinierad) värdetyp är endast kompatibel med sig själv.
Uppräkningar har en implicit konvertering till Enum och till deras underliggande typ.
Om varje element i sourceArray kräver en nedslagen (till exempel från en basklass till en härledd klass eller från ett gränssnitt till ett objekt) och ett eller flera element inte kan gjutas till motsvarande typ i destinationArray, genereras ett InvalidCastException .
Om den här metoden utlöser ett undantag vid kopiering är tillståndet destinationArray för odefinierat.
Den här metoden är en O()-nåtgärd, där n är length.
Se även
Gäller för
Copy(Array, Array, Int64)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- 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)
Parametrar
- length
- Int64
Ett 64-bitars heltal som representerar antalet element som ska kopieras. Heltalet måste vara mellan noll och Int32.MaxValue, inklusive.
Undantag
sourceArray och destinationArray har olika rangordningar.
sourceArray och destinationArray är av inkompatibla typer.
Minst ett element i sourceArray kan inte omvandlas till typen destinationArray.
length är mindre än 0 eller större än Int32.MaxValue.
length är större än antalet element i sourceArray.
-eller-
length är större än antalet element i destinationArray.
Kommentarer
Parametrarna sourceArray och destinationArray måste ha samma antal dimensioner. Dessutom destinationArray måste redan ha dimensionerats och måste ha ett tillräckligt antal element för att rymma de kopierade data.
När du kopierar mellan flerdimensionella matriser fungerar matrisen som en lång endimensionell matris, där raderna (eller kolumnerna) konceptmässigt läggs från slutpunkt till slutpunkt. Om en matris till exempel har tre rader (eller kolumner) med fyra element var kopierar du sex element från början av matrisen och kopierar alla fyra elementen i den första raden (eller kolumnen) och de två första elementen i den andra raden (eller kolumnen).
Om sourceArray och destinationArray överlappar fungerar den här metoden som om de ursprungliga värdena sourceArray för bevarades på en tillfällig plats innan destinationArray den skrevs över.
[C++]
Den här metoden motsvarar C/C++-standardfunktionen memmove, inte memcpy.
Matriserna kan vara matriser av referenstyp eller matriser av värdetyp. Nedcasting av typ utförs efter behov.
När du kopierar från en matris av referenstyp till en matris av värdetyp tas varje element bort och kopieras sedan. När du kopierar från en matris av värdetyp till en matris av referenstyp, boxas varje element och kopieras sedan.
När du kopierar från en matris av referenstyp eller värdetyp till en Object matris skapas en Object för att lagra varje värde eller referens och kopieras sedan. När du kopierar från en Object matris till en matris av referenstyp eller värdetyp och tilldelningen inte är möjlig genereras en InvalidCastException .
Om
sourceArrayochdestinationArrayär båda matriser av referenstyp eller båda matriserna av typen Objectutförs en ytlig kopia. En ytlig kopia av en Array är en ny Array som innehåller referenser till samma element som det ursprungliga Array. Elementen själva eller något som refereras till av elementen kopieras inte. Däremot kopierar en djup kopia av ett Array element och allt som refereras direkt eller indirekt av elementen.
En ArrayTypeMismatchException genereras om matriserna är av inkompatibla typer. Typkompatibilitet definieras på följande sätt:
En typ är kompatibel med sig själv.
En värdetyp är kompatibel med Object och med en gränssnittstyp som implementeras av den värdetypen. En värdetyp anses endast vara ansluten till ett gränssnitt om den implementerar gränssnittet direkt. Frånkopplade typer är inte kompatibla.
Två inbyggda (fördefinierade) värdetyper är kompatibla om kopiering från källtypen till måltypen är en bredare konvertering. En bredare konvertering förlorar aldrig information, medan en begränsad konvertering kan förlora information. Till exempel är konvertering av ett 32-bitars signerat heltal till ett 64-bitars signerat heltal en bredare konvertering, och konvertering av ett 64-bitars signerat heltal till ett 32-bitars signerat heltal är en begränsad konvertering. Mer information om konverteringar finns i Convert.
En icke-intrinsisk (användardefinierad) värdetyp är endast kompatibel med sig själv.
Uppräkningar har en implicit konvertering till Enum och till deras underliggande typ.
Om varje element i sourceArray kräver en nedslagen (till exempel från en basklass till en härledd klass eller från ett gränssnitt till ett objekt) och ett eller flera element inte kan gjutas till motsvarande typ i destinationArray, genereras ett InvalidCastException .
Om den här metoden utlöser ett undantag vid kopiering är tillståndet destinationArray för odefinierat.
Den här metoden är en O()-nåtgärd, där n är length.