Array.Copy Metod

Definition

Kopierar ett antal element i en till en Array annan Array och utför typgjutning och boxning efter behov.

Ö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

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.

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

sourceArray
Array

Som Array innehåller de data som ska kopieras.

sourceIndex
Int64

Ett 64-bitars heltal som representerar indexet där sourceArray kopieringen börjar.

destinationArray
Array

Det Array som tar emot data.

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 är null.

-eller-

destinationArray är null.

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 sourceArray och destinationArray ä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

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.

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

sourceArray
Array

Som Array innehåller de data som ska kopieras.

sourceIndex
Int32

Ett 32-bitars heltal som representerar indexet där sourceArray kopieringen börjar.

destinationArray
Array

Det Array som tar emot data.

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 är null.

-eller-

destinationArray är null.

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 sourceArray och destinationArray ä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

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.

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

sourceArray
Array

Som Array innehåller de data som ska kopieras.

destinationArray
Array

Det Array som tar emot data.

length
Int32

Ett 32-bitars heltal som representerar antalet element som ska kopieras.

Undantag

sourceArray är null.

-eller-

destinationArray är null.

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 sourceArray och destinationArray ä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

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.

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

sourceArray
Array

Som Array innehåller de data som ska kopieras.

destinationArray
Array

Det Array som tar emot data.

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 är null.

-eller-

destinationArray är null.

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 sourceArray och destinationArray ä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