Array::CopyTo Method (Array, Int32)
Assembly: mscorlib (in mscorlib.dll)
Parameters
- array
- Type: System::Array
The one-dimensional Array that is the destination of the elements copied from the current Array.
- index
- Type: System::Int32
A 32-bit integer that represents the index in array at which copying begins.
Implements
ICollection::CopyTo(Array, Int32)| Exception | Condition |
|---|---|
| ArgumentNullException | array is nullptr. |
| ArgumentOutOfRangeException | index is less than the lower bound of array. |
| ArgumentException | array is multidimensional. -or- The number of elements in the source Array is greater than the available space from index to the end of the destination array. |
| ArrayTypeMismatchException | The type of the source Array cannot be cast automatically to the type of the destination array. |
| RankException | The source Array is multidimensional. |
| InvalidCastException | At least one element in the source Array cannot be cast to the type of destination array. |
This method supports the System.Collections::ICollection interface. If implementing System.Collections::ICollection is not explicitly required, use Copy to avoid an extra indirection.
If this method throws an exception while copying, the state of array is undefined.
This method is an O(n) operation, where n is Length. It performs a shallow copy only.
The following code example shows how to copy an Array to another Array.
using namespace System; void main1(); void main2(); void main() { main1(); Console::WriteLine(); main2(); } void PrintValues( Array^ myArr ); void main1() { // Creates and initializes two new Array instances. Array^ mySourceArray = Array::CreateInstance( String::typeid, 6 ); mySourceArray->SetValue( "three", 0 ); mySourceArray->SetValue( "napping", 1 ); mySourceArray->SetValue( "cats", 2 ); mySourceArray->SetValue( "in", 3 ); mySourceArray->SetValue( "the", 4 ); mySourceArray->SetValue( "barn", 5 ); Array^ myTargetArray = Array::CreateInstance( String::typeid, 15 ); myTargetArray->SetValue( "The", 0 ); myTargetArray->SetValue( "quick", 1 ); myTargetArray->SetValue( "brown", 2 ); myTargetArray->SetValue( "fox", 3 ); myTargetArray->SetValue( "jumped", 4 ); myTargetArray->SetValue( "over", 5 ); myTargetArray->SetValue( "the", 6 ); myTargetArray->SetValue( "lazy", 7 ); myTargetArray->SetValue( "dog", 8 ); // Displays the values of the Array. Console::WriteLine( "The target Array instance contains the following (before and after copying):" ); PrintValues( myTargetArray ); // Copies the source Array to the target Array, starting at index 6. mySourceArray->CopyTo( myTargetArray, 6 ); // Displays the values of the Array. PrintValues( myTargetArray ); } 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( " {0}", myEnumerator->Current ); } Console::WriteLine(); } /* This code produces the following output. The target Array instance contains the following (before and after copying): The quick brown fox jumped over the lazy dog The quick brown fox jumped over three napping cats in the barn */
The following code example shows how to copy an Array to another Array with a nonzero lower bound. Note that the entire source Array is copied, including empty elements that overwrite existing elements in the target Array.
void PrintIndexAndValues( Array^ myArray ); void main2() { // Creates and initializes the source Array. Array^ myArrayZero = Array::CreateInstance( String::typeid, 3 ); myArrayZero->SetValue( "zero", 0 ); myArrayZero->SetValue( "one", 1 ); // Displays the source Array. Console::WriteLine( "The array with lowbound=0 contains:" ); PrintIndexAndValues( myArrayZero ); // Creates and initializes the target Array. array<int>^myArrLen = {4}; array<int>^myArrLow = {2}; Array^ myArrayTwo = Array::CreateInstance( String::typeid, myArrLen, myArrLow ); myArrayTwo->SetValue( "two", 2 ); myArrayTwo->SetValue( "three", 3 ); myArrayTwo->SetValue( "four", 4 ); myArrayTwo->SetValue( "five", 5 ); // Displays the target Array. Console::WriteLine( "The array with lowbound=2 contains:" ); PrintIndexAndValues( myArrayTwo ); // Copy from the array with lowbound=0 to the array with lowbound=2. myArrayZero->CopyTo( myArrayTwo, 3 ); // Displays the modified target Array. Console::WriteLine( "\nAfter copying at relative index 1:" ); PrintIndexAndValues( myArrayTwo ); } void PrintIndexAndValues( Array^ myArray ) { for ( int i = myArray->GetLowerBound( 0 ); i <= myArray->GetUpperBound( 0 ); i++ ) Console::WriteLine( "\t[{0}]:\t{1}", i, myArray->GetValue( i ) ); } /* This code produces the following output. The array with lowbound=0 contains: [0]: zero [1]: one [2]: The array with lowbound=2 contains: [2]: two [3]: three [4]: four [5]: five After copying at relative index 1: [2]: two [3]: zero [4]: one [5]: */
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.