Array.Copy Yöntem

Tanım

Bir dizi öğeyi bir diğerine ArrayArray kopyalar ve tür atama ve kutulama işlemlerini gerektiği gibi gerçekleştirir.

Aşırı Yüklemeler

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

Bir öğe aralığını belirtilen kaynak dizindeki bir Array başlangıçtan kopyalar ve bunları belirtilen hedef dizinden başlayarak başka bir Array öğeye yapıştırır. Uzunluk ve dizinler 64 bit tamsayılar olarak belirtilir.

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

Bir öğe aralığını belirtilen kaynak dizindeki bir Array başlangıçtan kopyalar ve bunları belirtilen hedef dizinden başlayarak başka bir Array öğeye yapıştırır. Uzunluk ve dizinler 32 bit tamsayılar olarak belirtilir.

Copy(Array, Array, Int32)

İlk öğedeki bir başlangıç öğesinden bir Array öğe aralığını kopyalar ve bunları ilk öğeden başlayarak başka bir Array öğeye yapıştırır. Uzunluk 32 bit tamsayı olarak belirtilir.

Copy(Array, Array, Int64)

İlk öğedeki bir başlangıç öğesinden bir Array öğe aralığını kopyalar ve bunları ilk öğeden başlayarak başka bir Array öğeye yapıştırır. Uzunluk 64 bit tamsayı olarak belirtilir.

Örnekler

Aşağıdaki kod örneği, türün birinden başka Array bir Object tür Array tamsayısına nasıl kopyalanacaklarını gösterir.

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)

Kaynak:
Array.cs
Kaynak:
Array.cs
Kaynak:
Array.cs
Kaynak:
Array.cs
Kaynak:
Array.cs

Bir öğe aralığını belirtilen kaynak dizindeki bir Array başlangıçtan kopyalar ve bunları belirtilen hedef dizinden başlayarak başka bir Array öğeye yapıştırır. Uzunluk ve dizinler 64 bit tamsayılar olarak belirtilir.

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)

Parametreler

sourceArray
Array

Kopyalanacak Array verileri içeren.

sourceIndex
Int64

Kopyalamanın başladığı dizini sourceArray temsil eden 64 bitlik bir tamsayı.

destinationArray
Array

Array Verileri alan.

destinationIndex
Int64

Depolamanın başladığı dizini destinationArray temsil eden 64 bitlik tamsayı.

length
Int64

Kopyalanacak öğe sayısını temsil eden 64 bitlik bir tamsayı. Tamsayı sıfır ile Int32.MaxValue (dahil) arasında olmalıdır.

Özel durumlar

sourceArray, null'e eşittir.

-veya-

destinationArray, null'e eşittir.

sourceArray ve destinationArray farklı derecelere sahip.

sourceArray ve destinationArray uyumsuz türlerdedir.

içindeki sourceArray en az bir öğe türüne destinationArrayyayınlanamaz.

sourceIndex , için geçerli dizin aralığının dışındadır sourceArray.

-veya-

destinationIndex , için geçerli dizin aralığının dışındadır destinationArray.

-veya-

length 0'dan küçük veya Int32.MaxValue değerinden büyük.

length öğesinden sonuna kadar olan öğe sourceIndex sayısından sourceArraybüyüktür.

-veya-

length öğesinden sonuna kadar olan öğe destinationIndex sayısından destinationArraybüyüktür.

Açıklamalar

sourceArray ve destinationArray parametreleri aynı sayıda boyuta sahip olmalıdır. Ayrıca, destinationArray zaten boyutlandırılmış olmalı ve kopyalanan verileri barındırmak için konumdan destinationIndex başlayarak yeterli sayıda öğeye sahip olmalıdır.

Çok boyutlu diziler arasında kopyalama yaparken dizi, satırların (veya sütunların) kavramsal olarak uçtan uca yerleştirildiği uzun bir tek boyutlu dizi gibi davranır. Örneğin, bir dizide her biri dört öğe içeren üç satır (veya sütun) varsa, dizinin başından altı öğe kopyalanırsa, ilk satırın (veya sütunun) dört öğesinin ve ikinci satırın (veya sütunun) ilk iki öğesinin tümü kopyalanacaktır. Üçüncü satırın (veya sütunun) ikinci öğesinden kopyalamaya başlamak için, sourceIndex ilk satırın (veya sütunun) üst sınırı ve ikinci satırın (veya sütunun) uzunluğu artı iki olmalıdır.

ve çakışıyorsasourceArray, bu yöntem özgün değerlerinin destinationArray üzerine yazılmadan önce sourceArray geçici bir konumda korunmuş gibi davranır.destinationArray

[C++]

Bu yöntem, standart C/C++ işlevine memmoveeşdeğerdir, ile eşdeğerdir memcpy.

Diziler başvuru türü diziler veya değer türü diziler olabilir. Type downcasting işlemi gerektiği gibi gerçekleştirilir.

  • Başvuru türündeki bir diziden değer türündeki bir diziye kopyalanırken, her öğe kutulanır ve kopyalanır. Değer türündeki bir diziden başvuru türü dizisine kopyalarken, her öğe kutulanır ve sonra kopyalanır.

  • Başvuru türü veya değer türü dizisinden bir Object diziye kopyalanırken, Object her değeri veya başvuru için bir oluşturulur ve sonra kopyalanır. Bir Object diziden başvuru türüne veya değer türündeki bir diziye kopyalandığında ve atama mümkün olmadığında, bir InvalidCastException oluşturulur.

  • ve sourceArray her ikisi de başvuru türü dizileriyse destinationArray veya her ikisi de türünde Objectdiziyse, sığ bir kopya gerçekleştirilir. basit bir Array kopyası, özgün Arrayile aynı öğelere başvurular içeren yeni Array bir kopyadır. Öğelerin kendileri veya öğeler tarafından başvuruda bulunan herhangi bir şey kopyalanmaz. Buna karşılık, bir dosyanın derin bir Array kopyası öğeleri ve öğeler tarafından doğrudan veya dolaylı olarak başvurulmuş her şeyi kopyalar.

Diziler uyumsuz türlerdeyse bir ArrayTypeMismatchException oluşturulur. Tür uyumluluğu aşağıdaki gibi tanımlanır:

  • Bir tür kendisiyle uyumludur.

  • Bir değer türü, ve ile Object bu değer türü tarafından uygulanan bir arabirim türüyle uyumludur. Bir değer türü, yalnızca bu arabirimi doğrudan uyguladığında arabirime bağlı olarak kabul edilir. Bağlantısı kesilmiş türler uyumlu değil.

  • Kaynak türden hedef türe kopyalama bir genişletme dönüştürmesiyse, iki iç (önceden tanımlanmış) değer türü uyumludur. Genişletme dönüştürmesi hiçbir zaman bilgi kaybetmezken, daraltma dönüştürmesi bilgileri kaybedebilir. Örneğin, 32 bit imzalı tamsayıyı 64 bit işaretli tamsayıya dönüştürmek genişletme dönüştürmesi ve 64 bit imzalı tamsayıyı 32 bit işaretli tamsayıya dönüştürmek de daraltma dönüştürmesi olur. Dönüştürmeler hakkında daha fazla bilgi için bkz Convert. .

  • Nonintrinsic (kullanıcı tanımlı) değer türü yalnızca kendisiyle uyumludur.

  • Sabit listelerin, temel alınan türüne Enum ve türüne örtük bir dönüştürmesi vardır.

içindeki sourceArray her öğe bir aşağı yayın gerektiriyorsa (örneğin, bir temel sınıftan türetilmiş bir sınıfa veya bir arabirimden nesneye) ve bir veya daha fazla öğe içinde destinationArraykarşılık gelen türe atanamıyorsa, bir InvalidCastException oluşturulur.

Bu yöntem kopyalama sırasında bir özel durum oluşturursa, durumu destinationArray tanımsız olur.

Bu yöntem bir O(n) işlemidir; burada n olur length.

Ayrıca bkz.

Şunlara uygulanır

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

Kaynak:
Array.cs
Kaynak:
Array.cs
Kaynak:
Array.CoreCLR.cs
Kaynak:
Array.cs
Kaynak:
Array.cs

Bir öğe aralığını belirtilen kaynak dizindeki bir Array başlangıçtan kopyalar ve bunları belirtilen hedef dizinden başlayarak başka bir Array öğeye yapıştırır. Uzunluk ve dizinler 32 bit tamsayılar olarak belirtilir.

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)

Parametreler

sourceArray
Array

Kopyalanacak Array verileri içeren.

sourceIndex
Int32

Kopyalamanın başladığı dizini sourceArray temsil eden 32 bitlik bir tamsayı.

destinationArray
Array

Array Verileri alan.

destinationIndex
Int32

Depolamanın başladığı dizini destinationArray temsil eden 32 bitlik tamsayı.

length
Int32

Kopyalanacak öğe sayısını temsil eden 32 bitlik bir tamsayı.

Özel durumlar

sourceArray, null'e eşittir.

-veya-

destinationArray, null'e eşittir.

sourceArray ve destinationArray farklı derecelere sahip.

sourceArray ve destinationArray uyumsuz türlerdedir.

içindeki sourceArray en az bir öğe türüne destinationArrayyayınlanamaz.

sourceIndex , öğesinin ilk boyutunun alt sınırından küçüktür sourceArray.

-veya-

destinationIndex , öğesinin ilk boyutunun alt sınırından küçüktür destinationArray.

-veya-

length, sıfırdan küçüktür.

length öğesinden sonuna kadar olan öğe sourceIndex sayısından sourceArraybüyüktür.

-veya-

length öğesinden sonuna kadar olan öğe destinationIndex sayısından destinationArraybüyüktür.

Açıklamalar

sourceArray ve destinationArray parametreleri aynı sayıda boyuta sahip olmalıdır. Ayrıca, destinationArray zaten boyutlandırılmış olmalı ve kopyalanan verileri barındırmak için konumdan destinationIndex başlayarak yeterli sayıda öğeye sahip olmalıdır.

Çok boyutlu diziler arasında kopyalama yaparken dizi, satırların (veya sütunların) kavramsal olarak uçtan uca yerleştirildiği uzun bir tek boyutlu dizi gibi davranır. Örneğin, bir dizide her biri dört öğe içeren üç satır (veya sütun) varsa, dizinin başından altı öğe kopyalanırsa, ilk satırın (veya sütunun) dört öğesinin ve ikinci satırın (veya sütunun) ilk iki öğesinin tümü kopyalanacaktır. Üçüncü satırın (veya sütunun) ikinci öğesinden kopyalamaya başlamak için, sourceIndex ilk satırın (veya sütunun) üst sınırı ve ikinci satırın (veya sütunun) uzunluğu artı iki olmalıdır.

ve çakışıyorsasourceArray, bu yöntem özgün değerlerinin destinationArray üzerine yazılmadan önce sourceArray geçici bir konumda korunmuş gibi davranır.destinationArray

[C++]

Bu yöntem, standart C/C++ işlevine memmoveeşdeğerdir, ile eşdeğerdir memcpy.

Diziler başvuru türü diziler veya değer türü diziler olabilir. Type downcasting işlemi gerektiği gibi gerçekleştirilir.

  • Başvuru türündeki bir diziden değer türündeki bir diziye kopyalanırken, her öğe kutulanır ve kopyalanır. Değer türündeki bir diziden başvuru türü dizisine kopyalarken, her öğe kutulanır ve sonra kopyalanır.

  • Başvuru türü veya değer türü dizisinden bir Object diziye kopyalanırken, Object her değeri veya başvuru için bir oluşturulur ve sonra kopyalanır. Bir Object diziden başvuru türüne veya değer türündeki bir diziye kopyalandığında ve atama mümkün olmadığında, bir InvalidCastException oluşturulur.

  • ve sourceArray her ikisi de başvuru türü dizileriyse destinationArray veya her ikisi de türünde Objectdiziyse, sığ bir kopya gerçekleştirilir. basit bir Array kopyası, özgün Arrayile aynı öğelere başvurular içeren yeni Array bir kopyadır. Öğelerin kendileri veya öğeler tarafından başvuruda bulunan herhangi bir şey kopyalanmaz. Buna karşılık, bir dosyanın derin bir Array kopyası öğeleri ve öğeler tarafından doğrudan veya dolaylı olarak başvurulmuş her şeyi kopyalar.

Diziler uyumsuz türlerdeyse bir ArrayTypeMismatchException oluşturulur. Tür uyumluluğu aşağıdaki gibi tanımlanır:

  • Bir tür kendisiyle uyumludur.

  • Bir değer türü, ve ile Object bu değer türü tarafından uygulanan bir arabirim türüyle uyumludur. Bir değer türü, yalnızca bu arabirimi doğrudan uyguladığında arabirime bağlı olarak kabul edilir. Bağlantısı kesilmiş türler uyumlu değil.

  • Kaynak türden hedef türe kopyalama bir genişletme dönüştürmesiyse, iki iç (önceden tanımlanmış) değer türü uyumludur. Genişletme dönüştürmesi hiçbir zaman bilgi kaybetmezken, daraltma dönüştürmesi bilgileri kaybedebilir. Örneğin, 32 bit imzalı tamsayıyı 64 bit işaretli tamsayıya dönüştürmek genişletme dönüştürmesi ve 64 bit imzalı tamsayıyı 32 bit işaretli tamsayıya dönüştürmek de daraltma dönüştürmesi olur. Dönüştürmeler hakkında daha fazla bilgi için bkz Convert. .

  • Nonintrinsic (kullanıcı tanımlı) değer türü yalnızca kendisiyle uyumludur.

  • Sabit listelerin, temel alınan türüne Enum ve türüne örtük bir dönüştürmesi vardır.

içindeki sourceArray her öğe bir aşağı yayın gerektiriyorsa (örneğin, bir temel sınıftan türetilmiş bir sınıfa veya bir arabirimden nesneye) ve bir veya daha fazla öğe içinde destinationArraykarşılık gelen türe atanamıyorsa, bir InvalidCastException oluşturulur.

Bu yöntem kopyalama sırasında bir özel durum oluşturursa, durumu destinationArray tanımsız olur.

Bu yöntem bir O(n) işlemidir; burada n olur length.

Ayrıca bkz.

Şunlara uygulanır

Copy(Array, Array, Int32)

Kaynak:
Array.cs
Kaynak:
Array.cs
Kaynak:
Array.CoreCLR.cs
Kaynak:
Array.cs
Kaynak:
Array.cs

İlk öğedeki bir başlangıç öğesinden bir Array öğe aralığını kopyalar ve bunları ilk öğeden başlayarak başka bir Array öğeye yapıştırır. Uzunluk 32 bit tamsayı olarak belirtilir.

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)

Parametreler

sourceArray
Array

Kopyalanacak Array verileri içeren.

destinationArray
Array

Array Verileri alan.

length
Int32

Kopyalanacak öğe sayısını temsil eden 32 bitlik bir tamsayı.

Özel durumlar

sourceArray, null'e eşittir.

-veya-

destinationArray, null'e eşittir.

sourceArray ve destinationArray farklı derecelere sahip.

sourceArray ve destinationArray uyumsuz türlerdedir.

içindeki sourceArray en az bir öğe türüne destinationArrayyayınlanamaz.

length, sıfırdan küçüktür.

length içindeki öğe sourceArraysayısından büyüktür.

-veya-

length içindeki öğe destinationArraysayısından büyüktür.

Açıklamalar

sourceArray ve destinationArray parametreleri aynı sayıda boyuta sahip olmalıdır. Ayrıca, destinationArray zaten boyutlandırılmış ve kopyalanan verileri barındırmak için yeterli sayıda öğeye sahip olmalıdır.

Çok boyutlu diziler arasında kopyalama yaparken, dizi, satırların (veya sütunların) kavramsal olarak uçtan uca yerleştirildiği uzun bir tek boyutlu dizi gibi davranır. Örneğin, bir dizide her biri dört öğe içeren üç satır (veya sütun) varsa, dizinin başından altı öğe kopyalanırsa, ilk satırın (veya sütunun) dört öğesinin ve ikinci satırın (veya sütunun) ilk iki öğesinin tümü kopyalanacaktır.

ve çakışıyorsasourceArray, bu yöntem özgün değerlerinin destinationArray üzerine yazılmadan önce sourceArray geçici bir konumda korunmuş gibi davranır.destinationArray

[C++]

Bu yöntem, standart C/C++ işlevine memmoveeşdeğerdir, ile eşdeğerdir memcpy.

Diziler başvuru türü diziler veya değer türü diziler olabilir. Type downcasting işlemi gerektiği gibi gerçekleştirilir.

  • Başvuru türündeki bir diziden değer türündeki bir diziye kopyalanırken, her öğe kutulanır ve kopyalanır. Değer türündeki bir diziden başvuru türü dizisine kopyalarken, her öğe kutulanır ve sonra kopyalanır.

  • Başvuru türü veya değer türü dizisinden bir Object diziye kopyalanırken, Object her değeri veya başvuru için bir oluşturulur ve sonra kopyalanır. Bir Object diziden başvuru türüne veya değer türündeki bir diziye kopyalandığında ve atama mümkün olmadığında, bir InvalidCastException oluşturulur.

  • ve sourceArray her ikisi de başvuru türü dizileriyse destinationArray veya her ikisi de türünde Objectdiziyse, sığ bir kopya gerçekleştirilir. basit bir Array kopyası, özgün Arrayile aynı öğelere başvurular içeren yeni Array bir kopyadır. Öğelerin kendileri veya öğeler tarafından başvuruda bulunan herhangi bir şey kopyalanmaz. Buna karşılık, bir dosyanın derin bir Array kopyası öğeleri ve öğeler tarafından doğrudan veya dolaylı olarak başvurulmuş her şeyi kopyalar.

Diziler uyumsuz türlerdeyse bir ArrayTypeMismatchException oluşturulur. Tür uyumluluğu aşağıdaki gibi tanımlanır:

  • Bir tür kendisiyle uyumludur.

  • Bir değer türü, ve ile Object bu değer türü tarafından uygulanan bir arabirim türüyle uyumludur. Bir değer türü, yalnızca bu arabirimi doğrudan uyguladığında arabirime bağlı olarak kabul edilir. Bağlantısı kesilmiş türler uyumlu değil.

  • Kaynak türden hedef türe kopyalama bir genişletme dönüştürmesiyse, iki iç (önceden tanımlanmış) değer türü uyumludur. Genişletme dönüştürmesi hiçbir zaman bilgi kaybetmezken, daraltma dönüştürmesi bilgileri kaybedebilir. Örneğin, 32 bit imzalı tamsayıyı 64 bit işaretli tamsayıya dönüştürmek genişletme dönüştürmesi ve 64 bit imzalı tamsayıyı 32 bit işaretli tamsayıya dönüştürmek de daraltma dönüştürmesi olur. Dönüştürmeler hakkında daha fazla bilgi için bkz Convert. .

  • Nonintrinsic (kullanıcı tanımlı) değer türü yalnızca kendisiyle uyumludur.

  • Sabit listelerin, temel alınan türüne Enum ve türüne örtük bir dönüştürmesi vardır.

içindeki sourceArray her öğe bir aşağı yayın gerektiriyorsa (örneğin, bir temel sınıftan türetilmiş bir sınıfa veya bir arabirimden nesneye) ve bir veya daha fazla öğe içinde destinationArraykarşılık gelen türe atanamıyorsa, bir InvalidCastException oluşturulur.

Bu yöntem kopyalama sırasında bir özel durum oluşturursa, durumu destinationArray tanımsız olur.

Bu yöntem bir O(n) işlemidir; burada n olur length.

Ayrıca bkz.

Şunlara uygulanır

Copy(Array, Array, Int64)

Kaynak:
Array.cs
Kaynak:
Array.cs
Kaynak:
Array.cs
Kaynak:
Array.cs
Kaynak:
Array.cs

İlk öğedeki bir başlangıç öğesinden bir Array öğe aralığını kopyalar ve bunları ilk öğeden başlayarak başka bir Array öğeye yapıştırır. Uzunluk 64 bit tamsayı olarak belirtilir.

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)

Parametreler

sourceArray
Array

Kopyalanacak Array verileri içeren.

destinationArray
Array

Array Verileri alan.

length
Int64

Kopyalanacak öğe sayısını temsil eden 64 bitlik bir tamsayı. Tamsayı sıfır ile Int32.MaxValue (dahil) arasında olmalıdır.

Özel durumlar

sourceArray, null'e eşittir.

-veya-

destinationArray, null'e eşittir.

sourceArray ve destinationArray farklı derecelere sahip.

sourceArray ve destinationArray uyumsuz türlerdedir.

içindeki sourceArray en az bir öğe türüne destinationArrayyayınlanamaz.

length 0'dan küçük veya Int32.MaxValue değerinden büyük.

length içindeki öğe sourceArraysayısından büyüktür.

-veya-

length içindeki öğe destinationArraysayısından büyüktür.

Açıklamalar

sourceArray ve destinationArray parametreleri aynı sayıda boyuta sahip olmalıdır. Ayrıca, destinationArray zaten boyutlandırılmış ve kopyalanan verileri barındırmak için yeterli sayıda öğeye sahip olmalıdır.

Çok boyutlu diziler arasında kopyalama yaparken, dizi, satırların (veya sütunların) kavramsal olarak uçtan uca yerleştirildiği uzun bir tek boyutlu dizi gibi davranır. Örneğin, bir dizide her biri dört öğe içeren üç satır (veya sütun) varsa, dizinin başından altı öğe kopyalanırsa, ilk satırın (veya sütunun) dört öğesinin ve ikinci satırın (veya sütunun) ilk iki öğesinin tümü kopyalanacaktır.

ve çakışıyorsasourceArray, bu yöntem özgün değerlerinin destinationArray üzerine yazılmadan önce sourceArray geçici bir konumda korunmuş gibi davranır.destinationArray

[C++]

Bu yöntem, standart C/C++ işlevine memmoveeşdeğerdir, ile eşdeğerdir memcpy.

Diziler başvuru türü diziler veya değer türü diziler olabilir. Type downcasting işlemi gerektiği gibi gerçekleştirilir.

  • Başvuru türündeki bir diziden değer türündeki bir diziye kopyalanırken, her öğe kutulanır ve kopyalanır. Değer türündeki bir diziden başvuru türü dizisine kopyalarken, her öğe kutulanır ve sonra kopyalanır.

  • Başvuru türü veya değer türü dizisinden bir Object diziye kopyalanırken, Object her değeri veya başvuru için bir oluşturulur ve sonra kopyalanır. Bir Object diziden başvuru türüne veya değer türündeki bir diziye kopyalandığında ve atama mümkün olmadığında, bir InvalidCastException oluşturulur.

  • ve sourceArray her ikisi de başvuru türü dizileriyse destinationArray veya her ikisi de türünde Objectdiziyse, sığ bir kopya gerçekleştirilir. basit bir Array kopyası, özgün Arrayile aynı öğelere başvurular içeren yeni Array bir kopyadır. Öğelerin kendileri veya öğeler tarafından başvuruda bulunan herhangi bir şey kopyalanmaz. Buna karşılık, bir dosyanın derin bir Array kopyası öğeleri ve öğeler tarafından doğrudan veya dolaylı olarak başvurulmuş her şeyi kopyalar.

Diziler uyumsuz türlerdeyse bir ArrayTypeMismatchException oluşturulur. Tür uyumluluğu aşağıdaki gibi tanımlanır:

  • Bir tür kendisiyle uyumludur.

  • Bir değer türü, ve ile Object bu değer türü tarafından uygulanan bir arabirim türüyle uyumludur. Bir değer türü, yalnızca bu arabirimi doğrudan uyguladığında arabirime bağlı olarak kabul edilir. Bağlantısı kesilmiş türler uyumlu değil.

  • Kaynak türden hedef türe kopyalama bir genişletme dönüştürmesiyse, iki iç (önceden tanımlanmış) değer türü uyumludur. Genişletme dönüştürmesi hiçbir zaman bilgi kaybetmezken, daraltma dönüştürmesi bilgileri kaybedebilir. Örneğin, 32 bit imzalı tamsayıyı 64 bit işaretli tamsayıya dönüştürmek genişletme dönüştürmesi ve 64 bit imzalı tamsayıyı 32 bit işaretli tamsayıya dönüştürmek de daraltma dönüştürmesi olur. Dönüştürmeler hakkında daha fazla bilgi için bkz Convert. .

  • Nonintrinsic (kullanıcı tanımlı) değer türü yalnızca kendisiyle uyumludur.

  • Sabit listelerin, temel alınan türüne Enum ve türüne örtük bir dönüştürmesi vardır.

içindeki sourceArray her öğe bir aşağı yayın gerektiriyorsa (örneğin, bir temel sınıftan türetilmiş bir sınıfa veya bir arabirimden nesneye) ve bir veya daha fazla öğe içinde destinationArraykarşılık gelen türe atanamıyorsa, bir InvalidCastException oluşturulur.

Bu yöntem kopyalama sırasında bir özel durum oluşturursa, durumu destinationArray tanımsız olur.

Bu yöntem bir O(n) işlemidir; burada n olur length.

Ayrıca bkz.

Şunlara uygulanır