Array::CreateInstance Method (Type^, Int32, Int32, Int32)
Creates a three-dimensional Array of the specified Type and dimension lengths, with zero-based indexing.
Assembly: mscorlib (in mscorlib.dll)
public: static Array^ CreateInstance( Type^ elementType, int length1, int length2, int length3 )
Parameters
- elementType
- Type: System::Type^
- length1
-
Type:
System::Int32
The size of the first dimension of the Array to create.
- length2
-
Type:
System::Int32
The size of the second dimension of the Array to create.
- length3
-
Type:
System::Int32
The size of the third dimension of the Array to create.
Return Value
Type: System::Array^A new three-dimensional Array of the specified Type with the specified length for each dimension, using zero-based indexing.
| Exception | Condition |
|---|---|
| ArgumentNullException | elementType is null. |
| ArgumentException | elementType is not a valid Type. |
| NotSupportedException | elementType is not supported. For example, Void is not supported. -or- elementType is an open generic type. |
| ArgumentOutOfRangeException | length1 is less than zero. -or- length2 is less than zero. -or- length3 is less than zero. |
Unlike most classes, Array provides the CreateInstance method, instead of public constructors, to allow for late bound access.
Reference-type elements are initialized to null. Value-type elements are initialized to zero.
This method is an O(n) operation, where n is the product of length1, length2, and length3.
The following code example shows how to create and initialize a three-dimensional Array.
using namespace System; void PrintValues( Array^ myArr ); void main() { // Creates and initializes a three-dimensional Array instance of type Object. Array^ my3DArray = Array::CreateInstance( Object::typeid, 2, 3, 4 ); for ( int i = my3DArray->GetLowerBound( 0 ); i <= my3DArray->GetUpperBound( 0 ); i++ ) for ( int j = my3DArray->GetLowerBound( 1 ); j <= my3DArray->GetUpperBound( 1 ); j++ ) for ( int k = my3DArray->GetLowerBound( 2 ); k <= my3DArray->GetUpperBound( 2 ); k++ ) my3DArray->SetValue( String::Concat( "abc", i, j, k ), i, j, k ); // Displays the values of the Array. Console::WriteLine( "The three-dimensional Array instance contains the following values:" ); PrintValues( my3DArray ); } 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. The three-dimensional Array instance contains the following values: abc000 abc001 abc002 abc003 abc010 abc011 abc012 abc013 abc020 abc021 abc022 abc023 abc100 abc101 abc102 abc103 abc110 abc111 abc112 abc113 abc120 abc121 abc122 abc123 */
Available since 1.1