Array.Copy Yöntem

Tanım

Bir öğe aralığını bir diğerine kopyalar Array Array ve gerekli olarak tür atama ve kutulama gerçekleştirir.Copies a range of elements in one Array to another Array and performs type casting and boxing as required.

Aşırı Yüklemeler

Copy(Array, Int64, Array, Int64, Int64)

Belirtilen kaynak dizininden başlayarak bir dizi öğeyi bir öğe Array halinde kopyalar ve Array belirtilen hedef dizinden başlayarak başka bir öğeye yapıştırır.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Uzunluk ve dizinler 64 bitlik tamsayılar olarak belirtilir.The length and the indexes are specified as 64-bit integers.

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

Belirtilen kaynak dizininden başlayarak bir dizi öğeyi bir öğe Array halinde kopyalar ve Array belirtilen hedef dizinden başlayarak başka bir öğeye yapıştırır.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Uzunluk ve dizinler 32 bitlik tamsayılar olarak belirtilir.The length and the indexes are specified as 32-bit integers.

Copy(Array, Array, Int64)

Bir öğe aralığını Array ilk öğeden başlayarak bir kez kopyalar ve Array ilk öğeden başlayarak diğerine yapıştırır.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Uzunluk, 64 bitlik bir tamsayı olarak belirtilir.The length is specified as a 64-bit integer.

Copy(Array, Array, Int32)

Bir öğe aralığını Array ilk öğeden başlayarak bir kez kopyalar ve Array ilk öğeden başlayarak diğerine yapıştırır.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Uzunluk, 32 bitlik bir tamsayı olarak belirtilir.The length is specified as a 32-bit integer.

Örnekler

Aşağıdaki kod örneği, türünden birinden bir türden diğerine nasıl kopyalanacağını gösterir Array Object Array .The following code example shows how to copy from one Array of type Object to another Array of type integer.

using namespace System;
void PrintValues( Array^ myArr );
void main()
{
   
   // Creates and initializes a new Array instance of type Int32.
   Array^ myIntArray = Array::CreateInstance( Type::GetType(  "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 instance of type Object.
   Array^ myObjArray = Array::CreateInstance( Type::GetType(  "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(  "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 );
}

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.
 
 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
 */
using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new Array of type Int32.
      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( "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 );
   }

   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.

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
*/
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)

Belirtilen kaynak dizininden başlayarak bir dizi öğeyi bir öğe Array halinde kopyalar ve Array belirtilen hedef dizinden başlayarak başka bir öğeye yapıştırır.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Uzunluk ve dizinler 64 bitlik tamsayılar olarak belirtilir.The length and the indexes are specified as 64-bit integers.

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

ArrayKopyalanacak verileri içerir.The Array that contains the data to copy.

sourceIndex
Int64

Konumundaki kopyalamanın başladığı dizini temsil eden 64 bitlik bir tamsayı sourceArray .A 64-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array

ArrayBu, verileri alır.The Array that receives the data.

destinationIndex
Int64

İçindeki depolamanın başladığı dizini temsil eden 64 bitlik bir tamsayı destinationArray .A 64-bit integer that represents the index in the destinationArray at which storing begins.

length
Int64

Kopyalanacak öğe sayısını temsil eden 64 bitlik bir tamsayı.A 64-bit integer that represents the number of elements to copy. Tamsayı sıfır ile MaxValue (dahil) arasında olmalıdır.The integer must be between zero and MaxValue, inclusive.

Özel durumlar

sourceArray, null değeridir.sourceArray is null.

-veya--or- destinationArray, null değeridir.destinationArray is null.

sourceArray ve destinationArray farklı derecelendirmelerinin vardır.sourceArray and destinationArray have different ranks.

sourceArray ve destinationArray uyumsuz türlerdir.sourceArray and destinationArray are of incompatible types.

İçindeki en az bir öğesi sourceArray türüne atanamaz destinationArray .At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex , için geçerli dizin aralığının dışındadır sourceArray .sourceIndex is outside the range of valid indexes for the sourceArray.

-veya--or- destinationIndex , için geçerli dizin aralığının dışındadır destinationArray .destinationIndex is outside the range of valid indexes for the destinationArray.

-veya--or- length 0 ' dan küçük veya büyüktür MaxValue .length is less than 0 or greater than MaxValue.

length , öğesinden sonuna kadar olan öğe sayısından daha büyük sourceIndex sourceArray .length is greater than the number of elements from sourceIndex to the end of sourceArray.

-veya--or- length , öğesinden sonuna kadar olan öğe sayısından daha büyük destinationIndex destinationArray .length is greater than the number of elements from destinationIndex to the end of destinationArray.

Açıklamalar

sourceArrayVe destinationArray parametrelerinin boyutları aynı olmalıdır.The sourceArray and destinationArray parameters must have the same number of dimensions. Ayrıca, destinationArray zaten boyutlandırılmış olmalıdır ve destinationIndex kopyalanmış verilere uyum sağlamak için konumdan başlayarak yeterli sayıda öğe içermelidir.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements starting from the destinationIndex position to accommodate the copied data.

Çok boyutlu diziler arasında kopyalama yaparken, dizi uzun boyutlu bir dizi gibi davranır, burada satırlar (veya sütunlar) kavramsal olarak uçtan uca yerleştirilir.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end-to-end. Örneğin, bir dizide her biri dört öğe içeren üç satır (veya sütun) varsa, dizinin başından altı öğe kopyalandığında ilk satırdaki (veya sütundaki) dört öğenin tümü ve ikinci satırdaki (veya sütundaki) ilk iki öğe kopyalanır.For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column). Üçüncü satırın (veya sütunun) ikinci öğesinden kopyalamaya başlamak için, sourceIndex ilk satırın üst sınırı (veya sütunu) artı ikinci satır (veya sütun) ile iki arasında bir uzunluk olmalıdır.To start copying from the second element of the third row (or column), sourceIndex must be the upper bound of the first row (or column) plus the length of the second row (or column) plus two.

Eğer sourceArray ve destinationArray çakıştığında, bu yöntem özgün değerlerinin geçersiz sourceArray kılınmadan önce geçici bir konumda korunabilmiş gibi davranır destinationArray .If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Bu yöntem, standart C/C++ işlevine eşdeğerdir memmove , değildir memcpy .This method is equivalent to the standard C/C++ function memmove, not memcpy.

Diziler, başvuru türü veya değer türü diziler olabilir.The arrays can be reference-type arrays or value-type arrays. Gerektiği gibi, tür alta dönüştürme işlemi gerçekleştirilir.Type downcasting is performed, as required.

  • Bir başvuru türü dizisinden bir değer türü dizisine kopyalama yapılırken, her öğe kutudan çıkarılır ve sonra kopyalanır.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Bir değer türü dizisinden başvuru türü dizisine kopyalarken, her öğe kutudan çıkarılır ve sonra kopyalanır.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Bir başvuru türü veya değer türü dizisinden bir Object diziye kopyalarken, Object her bir değeri veya başvuruyu tutmak ve ardından kopyalamak için bir oluşturulur.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. Bir Object diziden bir başvuru türü veya değer türü dizisine kopyalama yapılırken ve atama mümkün değilse, bir oluşturulur InvalidCastException .When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • sourceArrayVe destinationArray her ikisi de başvuru türü dizilerdir veya tür dizilerdir Object , basit bir kopya gerçekleştirilir.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Öğesinin basit bir kopyası, Array Array orijinaldeki aynı öğelere başvuruları içeren yeni bir kopyasıdır Array .A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Öğelerin kendileri veya öğelerin başvurdukları herhangi bir şey kopyalanmaz.The elements themselves or anything referenced by the elements are not copied. Buna karşılık, bir öğesinin derin bir kopyası Array öğeleri ve öğeler tarafından doğrudan veya dolaylı olarak başvurulan her şeyi kopyalar.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

ArrayTypeMismatchExceptionDiziler uyumsuz türlerde ise oluşturulur.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. Tür uyumluluğu aşağıdaki gibi tanımlanır:Type compatibility is defined as follows:

  • Tür, kendisiyle uyumludur.A type is compatible with itself.

  • Değer türü, Object Bu değer türü tarafından uygulanan arabirim türüyle ve ile uyumludur.A value type is compatible with Object and with an interface type implemented by that value type. Bir değer türü, yalnızca bir arabirimi doğrudan uyguluyorsa o arabirime bağlı olarak kabul edilir.A value type is considered connected to an interface only if it implements that interface directly. Bağlantısı kesilen türler uyumlu değil.Disconnected types are not compatible.

  • Kaynak türden hedef türe kopyalama genişleyen bir dönüştürme ise, iki koşulsuz (önceden tanımlanmış) değer türü uyumludur.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Genişleyen bir dönüştürmede bilgiler asla kaybolmaz, ancak daralan bir dönüştürmede bilgi kaybı olabilir.A widening conversion never loses information, whereas a narrowing conversion can lose information. Örneğin, 32 bit işaretli bir tamsayıyı 64 bit işaretli bir tamsayıya dönüştürmek genişleyen dönüştürme, 64 bit işaretli bir tamsayıyı 34 bit işaretli bir tamsayıya dönüştürmek ise daralan dönüştürmedir.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. Dönüştürmeler hakkında daha fazla bilgi için bkz Convert ..For more information about conversions, see Convert.

  • Koşullu (kullanıcı tanımlı) bir değer türü yalnızca kendisi ile uyumludur.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Numaralandırmalar Enum , temel türlerine ve öğesine örtülü dönüştürmeye sahiptir.Enumerations have an implicit conversion to Enum and to their underlying type.

İçindeki her öğe için sourceArray bir Alta yazma (örneğin, bir temel sınıftan türetilmiş bir sınıfa veya bir arabirimden bir nesne) varsa ve bir veya daha fazla öğe ' de karşılık gelen türe yayınlanamaz destinationArray , bir oluşturulur InvalidCastException .If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

Bu yöntem kopyalanırken bir özel durum oluşturursa, durumu destinationArray tanımsız olur.If this method throws an exception while copying, the state of destinationArray is undefined.

Bu yöntem, olduğu bir O ( n ) işlemidir n length .This method is an O(n) operation, where n is length.

Ayrıca bkz.

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

Belirtilen kaynak dizininden başlayarak bir dizi öğeyi bir öğe Array halinde kopyalar ve Array belirtilen hedef dizinden başlayarak başka bir öğeye yapıştırır.Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Uzunluk ve dizinler 32 bitlik tamsayılar olarak belirtilir.The length and the indexes are specified as 32-bit integers.

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

ArrayKopyalanacak verileri içerir.The Array that contains the data to copy.

sourceIndex
Int32

Konumundaki kopyalamanın başladığı dizini temsil eden 32 bitlik bir tamsayı sourceArray .A 32-bit integer that represents the index in the sourceArray at which copying begins.

destinationArray
Array

ArrayBu, verileri alır.The Array that receives the data.

destinationIndex
Int32

İçindeki depolamanın başladığı dizini temsil eden 32 bitlik bir tamsayı destinationArray .A 32-bit integer that represents the index in the destinationArray at which storing begins.

length
Int32

Kopyalanacak öğe sayısını temsil eden 32 bitlik bir tamsayı.A 32-bit integer that represents the number of elements to copy.

Özel durumlar

sourceArray, null değeridir.sourceArray is null.

-veya--or- destinationArray, null değeridir.destinationArray is null.

sourceArray ve destinationArray farklı derecelendirmelerinin vardır.sourceArray and destinationArray have different ranks.

sourceArray ve destinationArray uyumsuz türlerdir.sourceArray and destinationArray are of incompatible types.

İçindeki en az bir öğesi sourceArray türüne atanamaz destinationArray .At least one element in sourceArray cannot be cast to the type of destinationArray.

sourceIndex , ilk boyutunun alt sınırından daha küçüktür sourceArray .sourceIndex is less than the lower bound of the first dimension of sourceArray.

-veya--or- destinationIndex , ilk boyutunun alt sınırından daha küçüktür destinationArray .destinationIndex is less than the lower bound of the first dimension of destinationArray.

-veya--or- length, sıfırdan küçüktür.length is less than zero.

length , öğesinden sonuna kadar olan öğe sayısından daha büyük sourceIndex sourceArray .length is greater than the number of elements from sourceIndex to the end of sourceArray.

-veya--or- length , öğesinden sonuna kadar olan öğe sayısından daha büyük destinationIndex destinationArray .length is greater than the number of elements from destinationIndex to the end of destinationArray.

Açıklamalar

sourceArrayVe destinationArray parametrelerinin boyutları aynı olmalıdır.The sourceArray and destinationArray parameters must have the same number of dimensions. Ayrıca, destinationArray zaten boyutlandırılmış olmalıdır ve destinationIndex kopyalanmış verilere uyum sağlamak için konumdan başlayarak yeterli sayıda öğe içermelidir.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements starting from the destinationIndex position to accommodate the copied data.

Çok boyutlu diziler arasında kopyalama yaparken, dizi uzun boyutlu bir dizi gibi davranır, burada satırlar (veya sütunlar) kavramsal olarak uçtan uca yerleştirilir.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end-to-end. Örneğin, bir dizide her biri dört öğe içeren üç satır (veya sütun) varsa, dizinin başından altı öğe kopyalandığında ilk satırdaki (veya sütundaki) dört öğenin tümü ve ikinci satırdaki (veya sütundaki) ilk iki öğe kopyalanır.For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column). Üçüncü satırın (veya sütunun) ikinci öğesinden kopyalamaya başlamak için, sourceIndex ilk satırın üst sınırı (veya sütunu) artı ikinci satır (veya sütun) ile iki arasında bir uzunluk olmalıdır.To start copying from the second element of the third row (or column), sourceIndex must be the upper bound of the first row (or column) plus the length of the second row (or column) plus two.

Eğer sourceArray ve destinationArray çakıştığında, bu yöntem özgün değerlerinin geçersiz sourceArray kılınmadan önce geçici bir konumda korunabilmiş gibi davranır destinationArray .If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Bu yöntem, standart C/C++ işlevine eşdeğerdir memmove , değildir memcpy .This method is equivalent to the standard C/C++ function memmove, not memcpy.

Diziler, başvuru türü veya değer türü diziler olabilir.The arrays can be reference-type arrays or value-type arrays. Gerektiği gibi, tür alta dönüştürme işlemi gerçekleştirilir.Type downcasting is performed, as required.

  • Bir başvuru türü dizisinden bir değer türü dizisine kopyalama yapılırken, her öğe kutudan çıkarılır ve sonra kopyalanır.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Bir değer türü dizisinden başvuru türü dizisine kopyalarken, her öğe kutudan çıkarılır ve sonra kopyalanır.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Bir başvuru türü veya değer türü dizisinden bir Object diziye kopyalarken, Object her bir değeri veya başvuruyu tutmak ve ardından kopyalamak için bir oluşturulur.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. Bir Object diziden bir başvuru türü veya değer türü dizisine kopyalama yapılırken ve atama mümkün değilse, bir oluşturulur InvalidCastException .When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • sourceArrayVe destinationArray her ikisi de başvuru türü dizilerdir veya tür dizilerdir Object , basit bir kopya gerçekleştirilir.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Öğesinin basit bir kopyası, Array Array orijinaldeki aynı öğelere başvuruları içeren yeni bir kopyasıdır Array .A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Öğelerin kendileri veya öğelerin başvurdukları herhangi bir şey kopyalanmaz.The elements themselves or anything referenced by the elements are not copied. Buna karşılık, bir öğesinin derin bir kopyası Array öğeleri ve öğeler tarafından doğrudan veya dolaylı olarak başvurulan her şeyi kopyalar.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

ArrayTypeMismatchExceptionDiziler uyumsuz türlerde ise oluşturulur.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. Tür uyumluluğu aşağıdaki gibi tanımlanır:Type compatibility is defined as follows:

  • Tür, kendisiyle uyumludur.A type is compatible with itself.

  • Değer türü, Object Bu değer türü tarafından uygulanan arabirim türüyle ve ile uyumludur.A value type is compatible with Object and with an interface type implemented by that value type. Bir değer türü, yalnızca bir arabirimi doğrudan uyguluyorsa o arabirime bağlı olarak kabul edilir.A value type is considered connected to an interface only if it implements that interface directly. Bağlantısı kesilen türler uyumlu değil.Disconnected types are not compatible.

  • Kaynak türden hedef türe kopyalama genişleyen bir dönüştürme ise, iki koşulsuz (önceden tanımlanmış) değer türü uyumludur.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Genişleyen bir dönüştürmede bilgiler asla kaybolmaz, ancak daralan bir dönüştürmede bilgi kaybı olabilir.A widening conversion never loses information, whereas a narrowing conversion can lose information. Örneğin, 32 bit işaretli bir tamsayıyı 64 bit işaretli bir tamsayıya dönüştürmek genişleyen dönüştürme, 64 bit işaretli bir tamsayıyı 34 bit işaretli bir tamsayıya dönüştürmek ise daralan dönüştürmedir.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. Dönüştürmeler hakkında daha fazla bilgi için bkz Convert ..For more information about conversions, see Convert.

  • Koşullu (kullanıcı tanımlı) bir değer türü yalnızca kendisi ile uyumludur.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Numaralandırmalar Enum , temel türlerine ve öğesine örtülü dönüştürmeye sahiptir.Enumerations have an implicit conversion to Enum and to their underlying type.

İçindeki her öğe için sourceArray bir Alta yazma (örneğin, bir temel sınıftan türetilmiş bir sınıfa veya bir arabirimden bir nesne) varsa ve bir veya daha fazla öğe ' de karşılık gelen türe yayınlanamaz destinationArray , bir oluşturulur InvalidCastException .If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

Bu yöntem kopyalanırken bir özel durum oluşturursa, durumu destinationArray tanımsız olur.If this method throws an exception while copying, the state of destinationArray is undefined.

Bu yöntem, olduğu bir O ( n ) işlemidir n length .This method is an O(n) operation, where n is length.

Ayrıca bkz.

Copy(Array, Array, Int64)

Bir öğe aralığını Array ilk öğeden başlayarak bir kez kopyalar ve Array ilk öğeden başlayarak diğerine yapıştırır.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Uzunluk, 64 bitlik bir tamsayı olarak belirtilir.The length is specified as a 64-bit integer.

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

ArrayKopyalanacak verileri içerir.The Array that contains the data to copy.

destinationArray
Array

ArrayBu, verileri alır.The Array that receives the data.

length
Int64

Kopyalanacak öğe sayısını temsil eden 64 bitlik bir tamsayı.A 64-bit integer that represents the number of elements to copy. Tamsayı sıfır ile MaxValue (dahil) arasında olmalıdır.The integer must be between zero and MaxValue, inclusive.

Özel durumlar

sourceArray, null değeridir.sourceArray is null.

-veya--or- destinationArray, null değeridir.destinationArray is null.

sourceArray ve destinationArray farklı derecelendirmelerinin vardır.sourceArray and destinationArray have different ranks.

sourceArray ve destinationArray uyumsuz türlerdir.sourceArray and destinationArray are of incompatible types.

İçindeki en az bir öğesi sourceArray türüne atanamaz destinationArray .At least one element in sourceArray cannot be cast to the type of destinationArray.

length 0 ' dan küçük veya büyüktür MaxValue .length is less than 0 or greater than MaxValue.

length , içindeki öğe sayısından daha büyük sourceArray .length is greater than the number of elements in sourceArray.

-veya--or- length , içindeki öğe sayısından daha büyük destinationArray .length is greater than the number of elements in destinationArray.

Açıklamalar

sourceArrayVe destinationArray parametrelerinin boyutları aynı olmalıdır.The sourceArray and destinationArray parameters must have the same number of dimensions. Ayrıca, destinationArray zaten boyutlandırılmış olmalıdır ve kopyalanmış verilere uyum sağlamak için yeterli sayıda öğe olmalıdır.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

Çok boyutlu diziler arasında kopyalama yaparken, dizi uzun boyutlu bir dizi gibi davranır, burada satırlar (veya sütunlar) kavramsal olarak uçtan uca yerleştirilir.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end to end. Örneğin, bir dizide her biri dört öğe içeren üç satır (veya sütun) varsa, dizinin başından altı öğe kopyalandığında ilk satırdaki (veya sütundaki) dört öğenin tümü ve ikinci satırdaki (veya sütundaki) ilk iki öğe kopyalanır.For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column).

Eğer sourceArray ve destinationArray çakıştığında, bu yöntem özgün değerlerinin geçersiz sourceArray kılınmadan önce geçici bir konumda korunabilmiş gibi davranır destinationArray .If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Bu yöntem, standart C/C++ işlevine eşdeğerdir memmove , değildir memcpy .This method is equivalent to the standard C/C++ function memmove, not memcpy.

Diziler, başvuru türü veya değer türü diziler olabilir.The arrays can be reference-type arrays or value-type arrays. Gerektiği gibi, tür alta dönüştürme işlemi gerçekleştirilir.Type downcasting is performed, as required.

  • Bir başvuru türü dizisinden bir değer türü dizisine kopyalama yapılırken, her öğe kutudan çıkarılır ve sonra kopyalanır.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Bir değer türü dizisinden başvuru türü dizisine kopyalarken, her öğe kutudan çıkarılır ve sonra kopyalanır.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Bir başvuru türü veya değer türü dizisinden bir Object diziye kopyalarken, Object her bir değeri veya başvuruyu tutmak ve ardından kopyalamak için bir oluşturulur.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. Bir Object diziden bir başvuru türü veya değer türü dizisine kopyalama yapılırken ve atama mümkün değilse, bir oluşturulur InvalidCastException .When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • sourceArrayVe destinationArray her ikisi de başvuru türü dizilerdir veya tür dizilerdir Object , basit bir kopya gerçekleştirilir.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Öğesinin basit bir kopyası, Array Array orijinaldeki aynı öğelere başvuruları içeren yeni bir kopyasıdır Array .A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Öğelerin kendileri veya öğelerin başvurdukları herhangi bir şey kopyalanmaz.The elements themselves or anything referenced by the elements are not copied. Buna karşılık, bir öğesinin derin bir kopyası Array öğeleri ve öğeler tarafından doğrudan veya dolaylı olarak başvurulan her şeyi kopyalar.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

ArrayTypeMismatchExceptionDiziler uyumsuz türlerde ise oluşturulur.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. Tür uyumluluğu aşağıdaki gibi tanımlanır:Type compatibility is defined as follows:

  • Tür, kendisiyle uyumludur.A type is compatible with itself.

  • Değer türü, Object Bu değer türü tarafından uygulanan arabirim türüyle ve ile uyumludur.A value type is compatible with Object and with an interface type implemented by that value type. Bir değer türü, yalnızca bir arabirimi doğrudan uyguluyorsa o arabirime bağlı olarak kabul edilir.A value type is considered connected to an interface only if it implements that interface directly. Bağlantısı kesilen türler uyumlu değil.Disconnected types are not compatible.

  • Kaynak türden hedef türe kopyalama genişleyen bir dönüştürme ise, iki koşulsuz (önceden tanımlanmış) değer türü uyumludur.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Genişleyen bir dönüştürmede bilgiler asla kaybolmaz, ancak daralan bir dönüştürmede bilgi kaybı olabilir.A widening conversion never loses information, whereas a narrowing conversion can lose information. Örneğin, 32 bit işaretli bir tamsayıyı 64 bit işaretli bir tamsayıya dönüştürmek genişleyen dönüştürme, 64 bit işaretli bir tamsayıyı 34 bit işaretli bir tamsayıya dönüştürmek ise daralan dönüştürmedir.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. Dönüştürmeler hakkında daha fazla bilgi için bkz Convert ..For more information about conversions, see Convert.

  • Koşullu (kullanıcı tanımlı) bir değer türü yalnızca kendisi ile uyumludur.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Numaralandırmalar Enum , temel türlerine ve öğesine örtülü dönüştürmeye sahiptir.Enumerations have an implicit conversion to Enum and to their underlying type.

İçindeki her öğe için sourceArray bir Alta yazma (örneğin, bir temel sınıftan türetilmiş bir sınıfa veya bir arabirimden bir nesne) varsa ve bir veya daha fazla öğe ' de karşılık gelen türe yayınlanamaz destinationArray , bir oluşturulur InvalidCastException .If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

Bu yöntem kopyalanırken bir özel durum oluşturursa, durumu destinationArray tanımsız olur.If this method throws an exception while copying, the state of destinationArray is undefined.

Bu yöntem, olduğu bir O ( n ) işlemidir n length .This method is an O(n) operation, where n is length.

Ayrıca bkz.

Copy(Array, Array, Int32)

Bir öğe aralığını Array ilk öğeden başlayarak bir kez kopyalar ve Array ilk öğeden başlayarak diğerine yapıştırır.Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Uzunluk, 32 bitlik bir tamsayı olarak belirtilir.The length is specified as a 32-bit integer.

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

ArrayKopyalanacak verileri içerir.The Array that contains the data to copy.

destinationArray
Array

ArrayBu, verileri alır.The Array that receives the data.

length
Int32

Kopyalanacak öğe sayısını temsil eden 32 bitlik bir tamsayı.A 32-bit integer that represents the number of elements to copy.

Özel durumlar

sourceArray, null değeridir.sourceArray is null.

-veya--or- destinationArray, null değeridir.destinationArray is null.

sourceArray ve destinationArray farklı derecelendirmelerinin vardır.sourceArray and destinationArray have different ranks.

sourceArray ve destinationArray uyumsuz türlerdir.sourceArray and destinationArray are of incompatible types.

İçindeki en az bir öğesi sourceArray türüne atanamaz destinationArray .At least one element in sourceArray cannot be cast to the type of destinationArray.

length, sıfırdan küçüktür.length is less than zero.

length , içindeki öğe sayısından daha büyük sourceArray .length is greater than the number of elements in sourceArray.

-veya--or- length , içindeki öğe sayısından daha büyük destinationArray .length is greater than the number of elements in destinationArray.

Açıklamalar

sourceArrayVe destinationArray parametrelerinin boyutları aynı olmalıdır.The sourceArray and destinationArray parameters must have the same number of dimensions. Ayrıca, destinationArray zaten boyutlandırılmış olmalıdır ve kopyalanmış verilere uyum sağlamak için yeterli sayıda öğe olmalıdır.In addition, destinationArray must already have been dimensioned and must have a sufficient number of elements to accommodate the copied data.

Çok boyutlu diziler arasında kopyalama yaparken, dizi uzun boyutlu bir dizi gibi davranır, burada satırlar (veya sütunlar) kavramsal olarak uçtan uca yerleştirilir.When copying between multidimensional arrays, the array behaves like a long one-dimensional array, where the rows (or columns) are conceptually laid end to end. Örneğin, bir dizide her biri dört öğe içeren üç satır (veya sütun) varsa, dizinin başından altı öğe kopyalandığında ilk satırdaki (veya sütundaki) dört öğenin tümü ve ikinci satırdaki (veya sütundaki) ilk iki öğe kopyalanır.For example, if an array has three rows (or columns) with four elements each, copying six elements from the beginning of the array would copy all four elements of the first row (or column) and the first two elements of the second row (or column).

Eğer sourceArray ve destinationArray çakıştığında, bu yöntem özgün değerlerinin geçersiz sourceArray kılınmadan önce geçici bir konumda korunabilmiş gibi davranır destinationArray .If sourceArray and destinationArray overlap, this method behaves as if the original values of sourceArray were preserved in a temporary location before destinationArray is overwritten.

[C++][C++]

Bu yöntem, standart C/C++ işlevine eşdeğerdir memmove , değildir memcpy .This method is equivalent to the standard C/C++ function memmove, not memcpy.

Diziler, başvuru türü veya değer türü diziler olabilir.The arrays can be reference-type arrays or value-type arrays. Gerektiği gibi, tür alta dönüştürme işlemi gerçekleştirilir.Type downcasting is performed, as required.

  • Bir başvuru türü dizisinden bir değer türü dizisine kopyalama yapılırken, her öğe kutudan çıkarılır ve sonra kopyalanır.When copying from a reference-type array to a value-type array, each element is unboxed and then copied. Bir değer türü dizisinden başvuru türü dizisine kopyalarken, her öğe kutudan çıkarılır ve sonra kopyalanır.When copying from a value-type array to a reference-type array, each element is boxed and then copied.

  • Bir başvuru türü veya değer türü dizisinden bir Object diziye kopyalarken, Object her bir değeri veya başvuruyu tutmak ve ardından kopyalamak için bir oluşturulur.When copying from a reference-type or value-type array to an Object array, an Object is created to hold each value or reference and then copied. Bir Object diziden bir başvuru türü veya değer türü dizisine kopyalama yapılırken ve atama mümkün değilse, bir oluşturulur InvalidCastException .When copying from an Object array to a reference-type or value-type array and the assignment is not possible, an InvalidCastException is thrown.

  • sourceArrayVe destinationArray her ikisi de başvuru türü dizilerdir veya tür dizilerdir Object , basit bir kopya gerçekleştirilir.If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. Öğesinin basit bir kopyası, Array Array orijinaldeki aynı öğelere başvuruları içeren yeni bir kopyasıdır Array .A shallow copy of an Array is a new Array containing references to the same elements as the original Array. Öğelerin kendileri veya öğelerin başvurdukları herhangi bir şey kopyalanmaz.The elements themselves or anything referenced by the elements are not copied. Buna karşılık, bir öğesinin derin bir kopyası Array öğeleri ve öğeler tarafından doğrudan veya dolaylı olarak başvurulan her şeyi kopyalar.In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.

ArrayTypeMismatchExceptionDiziler uyumsuz türlerde ise oluşturulur.An ArrayTypeMismatchException is thrown if the arrays are of incompatible types. Tür uyumluluğu aşağıdaki gibi tanımlanır:Type compatibility is defined as follows:

  • Tür, kendisiyle uyumludur.A type is compatible with itself.

  • Değer türü, Object Bu değer türü tarafından uygulanan arabirim türüyle ve ile uyumludur.A value type is compatible with Object and with an interface type implemented by that value type. Bir değer türü, yalnızca bir arabirimi doğrudan uyguluyorsa o arabirime bağlı olarak kabul edilir.A value type is considered connected to an interface only if it implements that interface directly. Bağlantısı kesilen türler uyumlu değil.Disconnected types are not compatible.

  • Kaynak türden hedef türe kopyalama genişleyen bir dönüştürme ise, iki koşulsuz (önceden tanımlanmış) değer türü uyumludur.Two intrinsic (predefined) value types are compatible if copying from the source type to the destination type is a widening conversion. Genişleyen bir dönüştürmede bilgiler asla kaybolmaz, ancak daralan bir dönüştürmede bilgi kaybı olabilir.A widening conversion never loses information, whereas a narrowing conversion can lose information. Örneğin, 32 bit işaretli bir tamsayıyı 64 bit işaretli bir tamsayıya dönüştürmek genişleyen dönüştürme, 64 bit işaretli bir tamsayıyı 34 bit işaretli bir tamsayıya dönüştürmek ise daralan dönüştürmedir.For example, converting a 32-bit signed integer to a 64-bit signed integer is a widening conversion, and converting a 64-bit signed integer to a 32-bit signed integer is a narrowing conversion. Dönüştürmeler hakkında daha fazla bilgi için bkz Convert ..For more information about conversions, see Convert.

  • Koşullu (kullanıcı tanımlı) bir değer türü yalnızca kendisi ile uyumludur.A nonintrinsic (user-defined) value type is compatible only with itself.

  • Numaralandırmalar Enum , temel türlerine ve öğesine örtülü dönüştürmeye sahiptir.Enumerations have an implicit conversion to Enum and to their underlying type.

İçindeki her öğe için sourceArray bir Alta yazma (örneğin, bir temel sınıftan türetilmiş bir sınıfa veya bir arabirimden bir nesne) varsa ve bir veya daha fazla öğe ' de karşılık gelen türe yayınlanamaz destinationArray , bir oluşturulur InvalidCastException .If every element in sourceArray requires a downcast (for example, from a base class to a derived class or from an interface to an object) and one or more elements cannot be cast to the corresponding type in destinationArray, an InvalidCastException is thrown.

Bu yöntem kopyalanırken bir özel durum oluşturursa, durumu destinationArray tanımsız olur.If this method throws an exception while copying, the state of destinationArray is undefined.

Bu yöntem, olduğu bir O ( n ) işlemidir n length .This method is an O(n) operation, where n is length.

Ayrıca bkz.

Şunlara uygulanır