When you pass an array element to a method, the method receives a copy of the value in the element.

Copy(Array, Array, Int32)

Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. The length is specified as a 32-bit integer.

Copy(Array, Array, Int64)

Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. The length is specified as a 64-bit integer.

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

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. The length and the indexes are specified as 32-bit integers.

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

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. The length and the indexes are specified as 64-bit integers.

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