System Namespace Array Class
Copies a section of one Array to another Array and performs type casting and boxing as required.
1. Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element.
2. 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 following code example shows how to copy from one Array of type Object to another Array of type integer.
NOTE: This example shows how to use one of the overloaded versions of Copy. For other examples that might be available, see the individual overload topics.
[ VB ]
Imports System
Imports Microsoft.VisualBasic
Public Class SamplesArray
Public Shared Sub Main ( )
' Creates and initializes a new Array of type Int32.
Dim myIntArray As Array = _
Array.CreateInstance ( Type.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 ( Type.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.
Response.WriteLine ( "Int32 array:" )
PrintValues ( myIntArray )
Response.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.
Response.WriteLine ( "Int32 array - Last two elements should now be " _
+ "the same as Object array:" )
PrintValues ( myIntArray )
Response.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
Response.WriteLine ( )
i = 1
End If
Response.Write ( ControlChars.Tab + "{0}", myEnumerator.Current )
End While
Response.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
[ C# ]
using System;
public class SamplesArray {
public static void Main ( ) {
// Creates and initializes a new Array 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 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.
Response.WriteLine ( "Int32 array:" );
PrintValues ( myIntArray );
Response.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.
Response.WriteLine ( "Int32 array - Last two elements should now be the same as Object array:" );
PrintValues ( myIntArray );
Response.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 {
Response.WriteLine ( );
i = 1;
}
Response.Write ( "\t{0}", myEnumerator.Current );
}
Response.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
*/
[JScript ]
import System;
// Creates and initializes a new System.Array of type Int32.
var myIntArray : System.Array = System.Array.CreateInstance ( Type.GetType ( "System.Int32" ) , 5 );
for ( var i : int = myIntArray.GetLowerBound ( 0 ); i <= myIntArray.GetUpperBound ( 0 ); i++ )
myIntArray.SetValue ( Int32 ( i+1 ) , i );
// Creates and initializes a new Array of type Object.
var myObjArray : System.Array = System.Array.CreateInstance ( Type.GetType ( "System.Object" ) , 5 );
for ( var j : int = myObjArray.GetLowerBound ( 0 ); j <= myObjArray.GetUpperBound ( 0 ); j++ )
myObjArray.SetValue ( Int32 ( j+26 ) , j );
// Displays the initial values of both arrays.
Response.WriteLine ( "Int32 array:" );
PrintValues ( myIntArray );
Response.WriteLine ( "Object array:" );
PrintValues ( myObjArray );
// Copies the first element from the Int32 array to the Object array.
System.Array.Copy ( myIntArray, myIntArray.GetLowerBound ( 0 ) , myObjArray, myObjArray.GetLowerBound ( 0 ) , 1 );
// Copies the last two elements from the Object array to the Int32 array.
System.Array.Copy ( myObjArray, myObjArray.GetUpperBound ( 0 ) - 1, myIntArray, myIntArray.GetUpperBound ( 0 ) - 1, 2 );
// Displays the values of the modified arrays.
Response.WriteLine ( "Int32 array - Last two elements should now be the same as Object array:" );
PrintValues ( myIntArray );
Response.WriteLine ( "Object array - First element should now be the same as Int32 array:" );
PrintValues ( myObjArray );
function PrintValues ( myArr : System.Array ) {
var myEnumerator : System.Collections.IEnumerator = myArr.GetEnumerator ( );
var i : int = 0;
var cols : int = myArr.GetLength ( myArr.Rank - 1 );
while ( myEnumerator.MoveNext ( ) ) {
if ( i < cols ) {
i++;
} else {
Response.WriteLine ( );
i = 1;
}
Response.Write ( "\t{0}", myEnumerator.Current );
}
Response.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
*/
Array Members