Type と次元の長さを指定して、0 から始まるインデックス番号を持つ多次元の Array を作成します。次元の長さは、32 ビット整数の配列で指定します。
Overloads Public Shared Function CreateInstance( _
ByVal elementType As Type, _ ByVal ParamArray lengths() As Integer _) As Array
[C#]
public static Array CreateInstance(TypeelementType, params int[] lengths);
[C++]
public: static Array* CreateInstance(Type* elementType,intlengths __gc[]);
[JScript]
public static function CreateInstance(
elementType : Type,lengths : int[]) : Array;
パラメータ
戻り値
指定した Type の、次元ごとに指定した長さの、0 から始まるインデックス番号を持つ新しい多次元の Array 。
例外
| 例外の種類 | 条件 |
|---|---|
| ArgumentNullException | elementType が null 参照 (Visual Basic では Nothing) です。
または lengths が null 参照 (Nothing) です。 |
| ArgumentException | elementType が有効な Type ではありません。
または lengths 配列に含まれる要素が 1 つ未満です。 |
| NotSupportedException | elementType はサポートされていません。 |
| ArgumentOutOfRangeException | lengths のいずれかの値が 0 未満です。 |
解説
ほとんどのクラスとは異なり、 Array は、遅延バインディングによるアクセスを可能にするために、パブリック コンストラクタではなく CreateInstance メソッドを用意しています。
lengths 配列内の要素数が、新しい Array 内の次元数と等しい必要があります。 lengths 配列の各要素は、新しい Array 内で対応する次元の長さを指定する必要があります。
参照型の要素は、 null 参照 (Visual Basic では Nothing) に初期化されます。値型の要素は 0 に初期化されます。
使用例
多次元 Array を作成および初期化する方法を次のコード例に示します。
Imports System
Imports Microsoft.VisualBasic
Public Class SamplesArray
Public Shared Sub Main()
' Creates and initializes a multidimensional Array of type String.
Dim myLengthsArray() As Integer = {2, 3, 4, 5}
Dim my4DArray As Array = Array.CreateInstance(GetType(String), myLengthsArray)
Dim i, j, k, l As Integer
Dim myIndicesArray() As Integer
For i = my4DArray.GetLowerBound(0) To my4DArray.GetUpperBound(0)
For j = my4DArray.GetLowerBound(1) To my4DArray.GetUpperBound(1)
For k = my4DArray.GetLowerBound(2) To my4DArray.GetUpperBound(2)
For l = my4DArray.GetLowerBound(3) To my4DArray.GetUpperBound(3)
myIndicesArray = New Integer() {i, j, k, l}
my4DArray.SetValue(Convert.ToString(i) + j.ToString() _
+ k.ToString() + l.ToString(), myIndicesArray)
Next l
Next k
Next j
Next i
' Displays the values of the Array.
Console.WriteLine("The four-dimensional Array contains the following values:")
PrintValues(my4DArray)
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.
'
' The four-dimensional Array contains the following values:
' 0000 0001 0002 0003 0004
' 0010 0011 0012 0013 0014
' 0020 0021 0022 0023 0024
' 0030 0031 0032 0033 0034
' 0100 0101 0102 0103 0104
' 0110 0111 0112 0113 0114
' 0120 0121 0122 0123 0124
' 0130 0131 0132 0133 0134
' 0200 0201 0202 0203 0204
' 0210 0211 0212 0213 0214
' 0220 0221 0222 0223 0224
' 0230 0231 0232 0233 0234
' 1000 1001 1002 1003 1004
' 1010 1011 1012 1013 1014
' 1020 1021 1022 1023 1024
' 1030 1031 1032 1033 1034
' 1100 1101 1102 1103 1104
' 1110 1111 1112 1113 1114
' 1120 1121 1122 1123 1124
' 1130 1131 1132 1133 1134
' 1200 1201 1202 1203 1204
' 1210 1211 1212 1213 1214
' 1220 1221 1222 1223 1224
' 1230 1231 1232 1233 1234
[C#]
using System;
public class SamplesArray {
public static void Main() {
// Creates and initializes a multidimensional Array of type String.
int[] myLengthsArray = new int[4] { 2, 3, 4, 5 };
Array my4DArray=Array.CreateInstance( typeof(String), myLengthsArray );
for ( int i = my4DArray.GetLowerBound(0); i <= my4DArray.GetUpperBound(0); i++ )
for ( int j = my4DArray.GetLowerBound(1); j <= my4DArray.GetUpperBound(1); j++ )
for ( int k = my4DArray.GetLowerBound(2); k <= my4DArray.GetUpperBound(2); k++ )
for ( int l = my4DArray.GetLowerBound(3); l <= my4DArray.GetUpperBound(3); l++ ) {
int[] myIndicesArray = new int[4] { i, j, k, l };
my4DArray.SetValue( Convert.ToString(i) + j + k + l, myIndicesArray );
}
// Displays the values of the Array.
Console.WriteLine( "The four-dimensional Array contains the following values:" );
PrintValues( my4DArray );
}
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.
The four-dimensional Array contains the following values:
0000 0001 0002 0003 0004
0010 0011 0012 0013 0014
0020 0021 0022 0023 0024
0030 0031 0032 0033 0034
0100 0101 0102 0103 0104
0110 0111 0112 0113 0114
0120 0121 0122 0123 0124
0130 0131 0132 0133 0134
0200 0201 0202 0203 0204
0210 0211 0212 0213 0214
0220 0221 0222 0223 0224
0230 0231 0232 0233 0234
1000 1001 1002 1003 1004
1010 1011 1012 1013 1014
1020 1021 1022 1023 1024
1030 1031 1032 1033 1034
1100 1101 1102 1103 1104
1110 1111 1112 1113 1114
1120 1121 1122 1123 1124
1130 1131 1132 1133 1134
1200 1201 1202 1203 1204
1210 1211 1212 1213 1214
1220 1221 1222 1223 1224
1230 1231 1232 1233 1234
*/
[C++]
#using <mscorlib.dll>
using namespace System;
void PrintValues( Array* myArr );
void main() {
// Creates and initializes a multidimensional Array instance of type String.
int myLengthsArray __gc[] = { 2, 3, 4, 5 }; //new int[4]
Array* my4DArray=Array::CreateInstance( __typeof(String), myLengthsArray );
for ( int i = my4DArray->GetLowerBound(0); i <= my4DArray->GetUpperBound(0); i++ )
for ( int j = my4DArray->GetLowerBound(1); j <= my4DArray->GetUpperBound(1); j++ )
for ( int k = my4DArray->GetLowerBound(2); k <= my4DArray->GetUpperBound(2); k++ )
for ( int l = my4DArray->GetLowerBound(3); l <= my4DArray->GetUpperBound(3); l++ ) {
int myIndicesArray __gc[] = { i, j, k, l }; //new int[4]
my4DArray->SetValue( String::Concat(Convert::ToString(i), __box(j), __box(k), __box(l)), myIndicesArray );
}
// Displays the values of the Array.
Console::WriteLine( "The four-dimensional Array instance contains the following values:" );
PrintValues( my4DArray );
}
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 four-dimensional Array instance contains the following values:
0000 0001 0002 0003 0004
0010 0011 0012 0013 0014
0020 0021 0022 0023 0024
0030 0031 0032 0033 0034
0100 0101 0102 0103 0104
0110 0111 0112 0113 0114
0120 0121 0122 0123 0124
0130 0131 0132 0133 0134
0200 0201 0202 0203 0204
0210 0211 0212 0213 0214
0220 0221 0222 0223 0224
0230 0231 0232 0233 0234
1000 1001 1002 1003 1004
1010 1011 1012 1013 1014
1020 1021 1022 1023 1024
1030 1031 1032 1033 1034
1100 1101 1102 1103 1104
1110 1111 1112 1113 1114
1120 1121 1122 1123 1124
1130 1131 1132 1133 1134
1200 1201 1202 1203 1204
1210 1211 1212 1213 1214
1220 1221 1222 1223 1224
1230 1231 1232 1233 1234
*/
[JScript]
import System;
// Creates and initializes a multidimensional Array of type String.
var myLengthsArray : int[] = [ 2, 3, 4, 5 ];
var my4DArray : System.Array = System.Array.CreateInstance( System.String, myLengthsArray );
for ( var i : int = my4DArray.GetLowerBound(0); i <= my4DArray.GetUpperBound(0); i++ )
for ( var j : int = my4DArray.GetLowerBound(1); j <= my4DArray.GetUpperBound(1); j++ )
for ( var k : int = my4DArray.GetLowerBound(2); k <= my4DArray.GetUpperBound(2); k++ )
for ( var l : int = my4DArray.GetLowerBound(3); l <= my4DArray.GetUpperBound(3); l++ ) {
var myIndicesArray : int[] = [ i, j, k, l ];
my4DArray.SetValue( Convert.ToString(i) + j + k + l, myIndicesArray );
}
// Displays the values of the Array.
Console.WriteLine( "The four-dimensional Array contains the following values:" );
PrintValues( my4DArray );
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 {
Console.WriteLine();
i = 1;
}
Console.Write( "\t{0}", myEnumerator.Current );
}
Console.WriteLine();
}
/*
This code produces the following output.
The four-dimensional Array contains the following values:
0000 0001 0002 0003 0004
0010 0011 0012 0013 0014
0020 0021 0022 0023 0024
0030 0031 0032 0033 0034
0100 0101 0102 0103 0104
0110 0111 0112 0113 0114
0120 0121 0122 0123 0124
0130 0131 0132 0133 0134
0200 0201 0202 0203 0204
0210 0211 0212 0213 0214
0220 0221 0222 0223 0224
0230 0231 0232 0233 0234
1000 1001 1002 1003 1004
1010 1011 1012 1013 1014
1020 1021 1022 1023 1024
1030 1031 1032 1033 1034
1100 1101 1102 1103 1104
1110 1111 1112 1113 1114
1120 1121 1122 1123 1124
1130 1131 1132 1133 1134
1200 1201 1202 1203 1204
1210 1211 1212 1213 1214
1220 1221 1222 1223 1224
1230 1231 1232 1233 1234
*/
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
Array クラス | Array メンバ | System 名前空間 | Array.CreateInstance オーバーロードの一覧