asp.net.ph

Array.Copy Method

System Namespace   Array Class


Copies a section of one Array to another Array and performs type casting and boxing as required.

Overload List

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.


Example

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

Array Members Skip Navigation Links




Home
Suggested Reading


Previous page Back to top Next page

© 2000-2010 Rey Nuñez All rights reserved.

If you have any question, comment or suggestion
about this site, please send us a note

You can help support asp.net.ph