Array.CreateInstance Метод
Определение
Перегрузки
CreateInstance(Type, Int32) |
Создает одномерный массив Array указанного типа Type и длины, индексация которого начинается с нуля.Creates a one-dimensional Array of the specified Type and length, with zero-based indexing. |
CreateInstance(Type, Int32[]) |
Создает многомерный массив Array заданного типа Type и с заданными значениями длины измерения и индексацией, начинающейся с нуля.Creates a multidimensional Array of the specified Type and dimension lengths, with zero-based indexing. Длины по измерениям задаются в массиве 32-битовых целых чисел.The dimension lengths are specified in an array of 32-bit integers. |
CreateInstance(Type, Int64[]) |
Создает многомерный массив Array заданного типа Type и с заданными значениями длины измерения и индексацией, начинающейся с нуля.Creates a multidimensional Array of the specified Type and dimension lengths, with zero-based indexing. Длины по измерениям задаются в массиве 64-битовых целых чисел.The dimension lengths are specified in an array of 64-bit integers. |
CreateInstance(Type, Int32, Int32) |
Создает двумерный массив Array указанного типа Type с заданными длинами измерений и индексацией, начинающейся с нуля.Creates a two-dimensional Array of the specified Type and dimension lengths, with zero-based indexing. |
CreateInstance(Type, Int32[], Int32[]) |
Создает многомерный массив Array с указанным типом Type и длиной по измерениям и с заданными нижними границами.Creates a multidimensional Array of the specified Type and dimension lengths, with the specified lower bounds. |
CreateInstance(Type, Int32, Int32, Int32) |
Создает трехмерный массив Array указанного типа Type с заданными длинами по измерениям и индексацией, начинающейся с нуля.Creates a three-dimensional Array of the specified Type and dimension lengths, with zero-based indexing. |
CreateInstance(Type, Int32)
public:
static Array ^ CreateInstance(Type ^ elementType, int length);
public static Array CreateInstance (Type elementType, int length);
static member CreateInstance : Type * int -> Array
Public Shared Function CreateInstance (elementType As Type, length As Integer) As Array
Параметры
Возвращаемое значение
Новый одномерный массив Array указанного типа Type и длины, индексация которого начинается с нуля.A new one-dimensional Array of the specified Type with the specified length, using zero-based indexing.
Исключения
elementType
имеет значение null
.elementType
is null
.
Тип elementType
не поддерживается.elementType
is not supported. Например, Void не поддерживается.For example, Void is not supported.
-или--or-
elementType
представляет собой открытый универсальный тип.elementType
is an open generic type.
Значение параметра length
меньше нуля.length
is less than zero.
Примеры
В следующем примере кода показано, как создать и инициализировать одномерный объект Array .The following code example shows how to create and initialize a one-dimensional Array.
using namespace System;
void PrintValues( Array^ myArr );
void main()
{
// Creates and initializes a one-dimensional Array instance of type Int32.
Array^ my1DArray = Array::CreateInstance( Int32::typeid, 5 );
for ( int i = my1DArray->GetLowerBound( 0 ); i <= my1DArray->GetUpperBound( 0 ); i++ )
my1DArray->SetValue( i + 1, i );
// Displays the values of the Array.
Console::WriteLine( "The one-dimensional Array instance contains the following values:" );
PrintValues( my1DArray );
}
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 one-dimensional Array instance contains the following values:
1 2 3 4 5
*/
using System;
public class SamplesArray {
public static void Main() {
// Creates and initializes a one-dimensional Array of type Int32.
Array my1DArray=Array.CreateInstance( typeof(Int32), 5 );
for ( int i = my1DArray.GetLowerBound(0); i <= my1DArray.GetUpperBound(0); i++ )
my1DArray.SetValue( i+1, i );
// Displays the values of the Array.
Console.WriteLine( "The one-dimensional Array contains the following values:" );
PrintValues( my1DArray );
}
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 one-dimensional Array contains the following values:
1 2 3 4 5
*/
Public Class SamplesArray
Public Shared Sub Main()
' Creates and initializes a one-dimensional Array of type Int32.
Dim my1DArray As Array = Array.CreateInstance(GetType(Int32), 5)
Dim i As Integer
For i = my1DArray.GetLowerBound(0) To my1DArray.GetUpperBound(0)
my1DArray.SetValue(i + 1, i)
Next i
' Displays the values of the Array.
Console.WriteLine("The one-dimensional Array contains the " _
+ "following values:")
PrintValues(my1DArray)
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 one-dimensional Array contains the following values:
' 1 2 3 4 5
Комментарии
В отличие от большинства классов Array предоставляет CreateInstance метод, а не открытые конструкторы, чтобы обеспечить доступ с поздним связыванием.Unlike most classes, Array provides the CreateInstance method, instead of public constructors, to allow for late bound access.
Элементы ссылочного типа инициализируются значением null
.Reference-type elements are initialized to null
. Элементы типа значения инициализируются нулем.Value-type elements are initialized to zero.
Этот метод является n
операцией O (), где n
имеет length
.This method is an O(n
) operation, where n
is length
.
Применяется к
CreateInstance(Type, Int32[])
Создает многомерный массив Array заданного типа Type и с заданными значениями длины измерения и индексацией, начинающейся с нуля.Creates a multidimensional Array of the specified Type and dimension lengths, with zero-based indexing. Длины по измерениям задаются в массиве 32-битовых целых чисел.The dimension lengths are specified in an array of 32-bit integers.
public:
static Array ^ CreateInstance(Type ^ elementType, ... cli::array <int> ^ lengths);
public static Array CreateInstance (Type elementType, params int[] lengths);
static member CreateInstance : Type * int[] -> Array
Public Shared Function CreateInstance (elementType As Type, ParamArray lengths As Integer()) As Array
Параметры
- lengths
- Int32[]
Массив 32-разрядных целых чисел, представляющих размер каждого измерения массива Array, который нужно создать.An array of 32-bit integers that represent the size of each dimension of the Array to create.
Возвращаемое значение
Новый многомерный массив Array заданного типа Type с заданной для каждого измерения длиной и индексацией, начинающейся с нуля.A new multidimensional Array of the specified Type with the specified length for each dimension, using zero-based indexing.
Исключения
elementType
имеет значение null
.elementType
is null
.
-или--or-
lengths
имеет значение null
.lengths
is null
.
elementType
не является допустимым Type.elementType
is not a valid Type.
-или--or-
Массив lengths
содержит менее одного элемента.The lengths
array contains less than one element.
Тип elementType
не поддерживается.elementType
is not supported. Например, Void не поддерживается.For example, Void is not supported.
-или--or-
elementType
представляет собой открытый универсальный тип.elementType
is an open generic type.
Любое значение в lengths
меньше нуля.Any value in lengths
is less than zero.
Примеры
В следующем примере кода показано, как создать и инициализировать многомерное значение Array .The following code example shows how to create and initialize a multidimensional Array.
using namespace System;
void PrintValues( Array^ myArr );
void main()
{
// Creates and initializes a multidimensional Array instance of type String.
array<int>^myLengthsArray = {2,3,4,5};
Array^ my4DArray = Array::CreateInstance( String::typeid, 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++ )
{
array<int>^myIndicesArray = {i,j,k,l};
my4DArray->SetValue( String::Concat( Convert::ToString( i ), j, k, 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
*/
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
*/
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
Комментарии
В отличие от большинства классов Array предоставляет CreateInstance метод, а не открытые конструкторы, чтобы обеспечить доступ с поздним связыванием.Unlike most classes, Array provides the CreateInstance method, instead of public constructors, to allow for late bound access.
Число элементов в lengths
массиве должно равняться числу измерений в новом Array .The number of elements in the lengths
array must equal the number of dimensions in the new Array. Каждый элемент lengths
массива должен указывать длину соответствующего измерения в новом Array .Each element of the lengths
array must specify the length of the corresponding dimension in the new Array.
Элементы ссылочного типа инициализируются значением null
.Reference-type elements are initialized to null
. Элементы типа значения инициализируются нулем.Value-type elements are initialized to zero.
Этот метод является n
операцией O (), где n
— это произведение всех значений в lengths
.This method is an O(n
) operation, where n
is the product of all values in lengths
.
Применяется к
CreateInstance(Type, Int64[])
Создает многомерный массив Array заданного типа Type и с заданными значениями длины измерения и индексацией, начинающейся с нуля.Creates a multidimensional Array of the specified Type and dimension lengths, with zero-based indexing. Длины по измерениям задаются в массиве 64-битовых целых чисел.The dimension lengths are specified in an array of 64-bit integers.
public:
static Array ^ CreateInstance(Type ^ elementType, ... cli::array <long> ^ lengths);
public static Array CreateInstance (Type elementType, params long[] lengths);
static member CreateInstance : Type * int64[] -> Array
Public Shared Function CreateInstance (elementType As Type, ParamArray lengths As Long()) As Array
Параметры
- lengths
- Int64[]
Массив 64-разрядных целых чисел, представляющих размер каждого измерения массива Array, который нужно создать.An array of 64-bit integers that represent the size of each dimension of the Array to create. Каждое целое число в массиве должно лежать в диапазоне от нуля до MaxValue включительно.Each integer in the array must be between zero and MaxValue, inclusive.
Возвращаемое значение
Новый многомерный массив Array заданного типа Type с заданной для каждого измерения длиной и индексацией, начинающейся с нуля.A new multidimensional Array of the specified Type with the specified length for each dimension, using zero-based indexing.
Исключения
elementType
имеет значение null
.elementType
is null
.
-или--or-
lengths
имеет значение null
.lengths
is null
.
elementType
не является допустимым Type.elementType
is not a valid Type.
-или--or-
Массив lengths
содержит менее одного элемента.The lengths
array contains less than one element.
Тип elementType
не поддерживается.elementType
is not supported. Например, Void не поддерживается.For example, Void is not supported.
-или--or-
elementType
представляет собой открытый универсальный тип.elementType
is an open generic type.
Значение в lengths
меньше нуля или больше MaxValue.Any value in lengths
is less than zero or greater than MaxValue.
Примеры
В следующем примере кода показано, как создать и инициализировать многомерное значение Array .The following code example shows how to create and initialize a multidimensional Array.
using namespace System;
void PrintValues( Array^ myArr );
void main()
{
// Creates and initializes a multidimensional Array instance of type String.
array<int>^myLengthsArray = {2,3,4,5};
Array^ my4DArray = Array::CreateInstance( String::typeid, 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++ )
{
array<int>^myIndicesArray = {i,j,k,l};
my4DArray->SetValue( String::Concat( Convert::ToString( i ), j, k, 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
*/
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
*/
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
Комментарии
В отличие от большинства классов Array предоставляет CreateInstance метод, а не открытые конструкторы, чтобы обеспечить доступ с поздним связыванием.Unlike most classes, Array provides the CreateInstance method, instead of public constructors, to allow for late bound access.
Число элементов в lengths
массиве должно равняться числу измерений в новом Array .The number of elements in the lengths
array must equal the number of dimensions in the new Array. Каждый элемент lengths
массива должен указывать длину соответствующего измерения в новом Array .Each element of the lengths
array must specify the length of the corresponding dimension in the new Array.
Элементы ссылочного типа инициализируются значением null
.Reference-type elements are initialized to null
. Элементы типа значения инициализируются нулем.Value-type elements are initialized to zero.
Этот метод является n
операцией O (), где n
— это произведение всех значений в lengths
.This method is an O(n
) operation, where n
is the product of all values in lengths
.
Применяется к
CreateInstance(Type, Int32, Int32)
public:
static Array ^ CreateInstance(Type ^ elementType, int length1, int length2);
public static Array CreateInstance (Type elementType, int length1, int length2);
static member CreateInstance : Type * int * int -> Array
Public Shared Function CreateInstance (elementType As Type, length1 As Integer, length2 As Integer) As Array
Параметры
- length1
- Int32
Размер первого измерения создаваемого массива Array.The size of the first dimension of the Array to create.
- length2
- Int32
Размер второго измерения создаваемого массива Array.The size of the second dimension of the Array to create.
Возвращаемое значение
Новый двумерный массив Array указанного типа Type с заданной для каждого измерения длиной и индексацией, начинающейся с нуля.A new two-dimensional Array of the specified Type with the specified length for each dimension, using zero-based indexing.
Исключения
elementType
имеет значение null
.elementType
is null
.
Тип elementType
не поддерживается.elementType
is not supported. Например, Void не поддерживается.For example, Void is not supported.
-или--or-
elementType
представляет собой открытый универсальный тип.elementType
is an open generic type.
Значение параметра length1
меньше нуля.length1
is less than zero.
-или--or-
Значение параметра length2
меньше нуля.length2
is less than zero.
Примеры
В следующем примере кода показано, как создать и инициализировать двухмерный Array .The following code example shows how to create and initialize a two-dimensional Array.
using namespace System;
void PrintValues( Array^ myArr );
void main()
{
// Creates and initializes a two-dimensional Array instance of type String.
Array^ my2DArray = Array::CreateInstance( String::typeid, 2, 3 );
for ( int i = my2DArray->GetLowerBound( 0 ); i <= my2DArray->GetUpperBound( 0 ); i++ )
for ( int j = my2DArray->GetLowerBound( 1 ); j <= my2DArray->GetUpperBound( 1 ); j++ )
my2DArray->SetValue( String::Concat( "abc", i, j ), i, j );
// Displays the values of the Array.
Console::WriteLine( "The two-dimensional Array instance contains the following values:" );
PrintValues( my2DArray );
}
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 two-dimensional Array instance contains the following values:
abc00 abc01 abc02
abc10 abc11 abc12
*/
using System;
public class SamplesArray {
public static void Main() {
// Creates and initializes a two-dimensional Array of type String.
Array my2DArray=Array.CreateInstance( typeof(String), 2, 3 );
for ( int i = my2DArray.GetLowerBound(0); i <= my2DArray.GetUpperBound(0); i++ )
for ( int j = my2DArray.GetLowerBound(1); j <= my2DArray.GetUpperBound(1); j++ )
my2DArray.SetValue( "abc" + i + j, i, j );
// Displays the values of the Array.
Console.WriteLine( "The two-dimensional Array contains the following values:" );
PrintValues( my2DArray );
}
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 two-dimensional Array contains the following values:
abc00 abc01 abc02
abc10 abc11 abc12
*/
Public Class SamplesArray
Public Shared Sub Main()
' Creates and initializes a two-dimensional Array of type String.
Dim my2DArray As Array = Array.CreateInstance(GetType(String), 2, 3)
Dim i, j As Integer
For i = my2DArray.GetLowerBound(0) To my2DArray.GetUpperBound(0)
For j = my2DArray.GetLowerBound(1) To my2DArray.GetUpperBound(1)
my2DArray.SetValue("abc" + i.ToString() + j.ToString(), i, j)
Next j
Next i
' Displays the values of the Array.
Console.WriteLine("The two-dimensional Array contains the " _
+ "following values:")
PrintValues(my2DArray)
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 two-dimensional Array contains the following values:
' abc00 abc01 abc02
' abc10 abc11 abc12
Комментарии
В отличие от большинства классов Array предоставляет CreateInstance метод, а не открытые конструкторы, чтобы обеспечить доступ с поздним связыванием.Unlike most classes, Array provides the CreateInstance method, instead of public constructors, to allow for late bound access.
Элементы ссылочного типа инициализируются значением null
.Reference-type elements are initialized to null
. Элементы типа значения инициализируются нулем.Value-type elements are initialized to zero.
Этот метод является n
операцией O (), где n
— это продукт length1
и length2
.This method is an O(n
) operation, where n
is the product of length1
and length2
.
Применяется к
CreateInstance(Type, Int32[], Int32[])
public:
static Array ^ CreateInstance(Type ^ elementType, cli::array <int> ^ lengths, cli::array <int> ^ lowerBounds);
public static Array CreateInstance (Type elementType, int[] lengths, int[] lowerBounds);
static member CreateInstance : Type * int[] * int[] -> Array
Public Shared Function CreateInstance (elementType As Type, lengths As Integer(), lowerBounds As Integer()) As Array
Параметры
- lengths
- Int32[]
Одномерный массив, содержащий размер всех измерений массива Array, который необходимо создать.A one-dimensional array that contains the size of each dimension of the Array to create.
- lowerBounds
- Int32[]
Одномерный массив, содержащий нижние границы (начальные индексы) всех измерений массива Array, который необходимо создать.A one-dimensional array that contains the lower bound (starting index) of each dimension of the Array to create.
Возвращаемое значение
Новый многомерный массив Array указанного типа Type с заданной длиной и нижней границей каждого измерения.A new multidimensional Array of the specified Type with the specified length and lower bound for each dimension.
Исключения
elementType
имеет значение null
.elementType
is null
.
-или--or-
lengths
имеет значение null
.lengths
is null
.
-или--or-
lowerBounds
имеет значение null
.lowerBounds
is null
.
elementType
не является допустимым Type.elementType
is not a valid Type.
-или--or-
Массив lengths
содержит менее одного элемента.The lengths
array contains less than one element.
-или--or-
Массивы lengths
и lowerBounds
содержат разное число элементов.The lengths
and lowerBounds
arrays do not contain the same number of elements.
Тип elementType
не поддерживается.elementType
is not supported. Например, Void не поддерживается.For example, Void is not supported.
-или--or-
elementType
представляет собой открытый универсальный тип.elementType
is an open generic type.
Любое значение в lengths
меньше нуля.Any value in lengths
is less than zero.
-или--or-
Какое-либо значение в lowerBounds
очень велико, вследствие чего сумма нижней границы измерения и длины превышает значение MaxValue.Any value in lowerBounds
is very large, such that the sum of a dimension's lower bound and length is greater than MaxValue.
Примеры
В следующем примере кода показано, как создать и инициализировать Многомерное измерение Array с указанными нижними границами.The following code example shows how to create and initialize a multidimensional Array with specified lower bounds.
using namespace System;
void PrintValues( Array^ myArr );
void main()
{
// Creates and initializes a multidimensional Array instance of type String.
array<int>^myLengthsArray = {3,5};
array<int>^myBoundsArray = {2,3};
Array^ myArray = Array::CreateInstance( String::typeid, myLengthsArray, myBoundsArray );
for ( int i = myArray->GetLowerBound( 0 ); i <= myArray->GetUpperBound( 0 ); i++ )
for ( int j = myArray->GetLowerBound( 1 ); j <= myArray->GetUpperBound( 1 ); j++ )
{
array<int>^myIndicesArray = {i,j};
myArray->SetValue( String::Concat( Convert::ToString( i ), j ), myIndicesArray );
}
// Displays the lower bounds and the upper bounds of each dimension.
Console::WriteLine( "Bounds:\tLower\tUpper" );
for ( int i = 0; i < myArray->Rank; i++ )
Console::WriteLine( "{0}:\t{1}\t{2}", i, myArray->GetLowerBound( i ), myArray->GetUpperBound( i ) );
// Displays the values of the Array.
Console::WriteLine( "The Array instance contains the following values:" );
PrintValues( myArray );
}
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.
Bounds: Lower Upper
0: 2 4
1: 3 7
The Array instance contains the following values:
23 24 25 26 27
33 34 35 36 37
43 44 45 46 47
*/
using System;
public class SamplesArray {
public static void Main() {
// Creates and initializes a multidimensional Array of type String.
int[] myLengthsArray = new int[2] { 3, 5 };
int[] myBoundsArray = new int[2] { 2, 3 };
Array myArray=Array.CreateInstance( typeof(String), myLengthsArray, myBoundsArray );
for ( int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++ )
for ( int j = myArray.GetLowerBound(1); j <= myArray.GetUpperBound(1); j++ ) {
int[] myIndicesArray = new int[2] { i, j };
myArray.SetValue( Convert.ToString(i) + j, myIndicesArray );
}
// Displays the lower bounds and the upper bounds of each dimension.
Console.WriteLine( "Bounds:\tLower\tUpper" );
for ( int i = 0; i < myArray.Rank; i++ )
Console.WriteLine( "{0}:\t{1}\t{2}", i, myArray.GetLowerBound(i), myArray.GetUpperBound(i) );
// Displays the values of the Array.
Console.WriteLine( "The Array contains the following values:" );
PrintValues( myArray );
}
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.
Bounds: Lower Upper
0: 2 4
1: 3 7
The Array contains the following values:
23 24 25 26 27
33 34 35 36 37
43 44 45 46 47
*/
using System;
public class SamplesArray {
public static void Main() {
// Creates and initializes a multidimensional Array of type String.
int[] myLengthsArray = new int[2] { 3, 5 };
int[] myBoundsArray = new int[2] { 2, 3 };
Array myArray=Array.CreateInstance( typeof(String), myLengthsArray, myBoundsArray );
for ( int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++ )
for ( int j = myArray.GetLowerBound(1); j <= myArray.GetUpperBound(1); j++ ) {
int[] myIndicesArray = new int[2] { i, j };
myArray.SetValue( Convert.ToString(i) + j, myIndicesArray );
}
// Displays the lower bounds and the upper bounds of each dimension.
Console.WriteLine( "Bounds:\tLower\tUpper" );
for ( int i = 0; i < myArray.Rank; i++ )
Console.WriteLine( "{0}:\t{1}\t{2}", i, myArray.GetLowerBound(i), myArray.GetUpperBound(i) );
// Displays the values of the Array.
Console.WriteLine( "The Array contains the following values:" );
PrintValues( myArray );
}
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.
Bounds: Lower Upper
0: 2 4
1: 3 7
The Array contains the following values:
23 24 25 26 27
33 34 35 36 37
43 44 45 46 47
*/
Комментарии
В отличие от большинства классов Array предоставляет CreateInstance метод, а не открытые конструкторы, чтобы обеспечить доступ с поздним связыванием.Unlike most classes, Array provides the CreateInstance method, instead of public constructors, to allow for late bound access.
lengths
lowerBounds
Массивы и должны иметь одинаковое количество элементов.The lengths
and lowerBounds
arrays must have the same number of elements. Число элементов в lengths
массиве должно равняться числу измерений в новом Array .The number of elements in the lengths
array must equal the number of dimensions in the new Array.
Каждый элемент lengths
массива должен указывать длину соответствующего измерения в новом Array .Each element of the lengths
array must specify the length of the corresponding dimension in the new Array.
Каждый элемент lowerBounds
массива должен указывать нижнюю границу соответствующего измерения в новом Array .Each element of the lowerBounds
array must specify the lower bound of the corresponding dimension in the new Array. Как правило, Библиотека классов .NET и многие языки программирования не обрабатывали нулевые нижние границы.Generally, the .NET class library and many programming languages do not handle non-zero lower bounds.
Элементы ссылочного типа инициализируются значением null
.Reference-type elements are initialized to null
. Элементы типа значения инициализируются нулем.Value-type elements are initialized to zero.
Этот метод является n
операцией O (), где n
— это произведение всех значений в lengths
.This method is an O(n
) operation, where n
is the product of all values in lengths
.
Примечание
Не все языки поддерживают массивы с ненулевыми нижними границами, поэтому невозможно привести экземпляры, не являющиеся нулями, в зависимости от Array типа массива языка.Not all languages support arrays with non-zero lower bounds, and therefore you may not be able to cast instances of non-zero based Array to the language's array type. Например, невозможно привести одномерный массив целых чисел с нижней границей 6 к int[]
типу C#.For example, you cannot cast a 1-dimensional integer array with the lower bound 6 to C#'s int[]
type. Это приводит к InvalidCastException ошибке во время выполнения с сообщением "не удалось привести объект типа System. Int32 [ * ]" к типу "System. Int32 []". ", где звездочка ( * ) означает ненулевой индекс на основе нуля.This results in InvalidCastException during runtime with the message "Unable to cast object of type 'System.Int32[*]' to type 'System.Int32[]'.", where the asterisk (*) means non-zero based index. Однако можно привести массивы на основе нуля любого ранга, созданного с помощью, CreateInstance(Type, Int32[], Int32[]) к массиву языка.However, you can cast zero based arrays of any rank created with CreateInstance(Type, Int32[], Int32[]) to the language's array. Например, можно привести двухмерный массив целых чисел, начинающийся с нуля, созданный с помощью этого метода, к int[,]
типу C#.For example, you can cast a 2-dimensional zero based integer array created with this method to C#'s int[,]
type.
Применяется к
CreateInstance(Type, Int32, Int32, Int32)
public:
static Array ^ CreateInstance(Type ^ elementType, int length1, int length2, int length3);
public static Array CreateInstance (Type elementType, int length1, int length2, int length3);
static member CreateInstance : Type * int * int * int -> Array
Public Shared Function CreateInstance (elementType As Type, length1 As Integer, length2 As Integer, length3 As Integer) As Array
Параметры
- length1
- Int32
Размер первого измерения создаваемого массива Array.The size of the first dimension of the Array to create.
- length2
- Int32
Размер второго измерения создаваемого массива Array.The size of the second dimension of the Array to create.
- length3
- Int32
Размер третьего измерения массива Array, который требуется создать.The size of the third dimension of the Array to create.
Возвращаемое значение
Новый трехмерный массив Array указанного типа Type с заданной для каждого измерения длиной и индексацией, начинающейся с нуля.A new three-dimensional Array of the specified Type with the specified length for each dimension, using zero-based indexing.
Исключения
elementType
имеет значение null
.elementType
is null
.
Тип elementType
не поддерживается.elementType
is not supported. Например, Void не поддерживается.For example, Void is not supported.
-или--or-
elementType
представляет собой открытый универсальный тип.elementType
is an open generic type.
Значение параметра length1
меньше нуля.length1
is less than zero.
-или--or-
Значение параметра length2
меньше нуля.length2
is less than zero.
-или--or-
Значение параметра length3
меньше нуля.length3
is less than zero.
Примеры
В следующем примере кода показано, как создать и инициализировать трехмерный объект Array .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
*/
using System;
public class SamplesArray {
public static void Main() {
// Creates and initializes a three-dimensional Array of type Object.
Array my3DArray=Array.CreateInstance( typeof(Object), 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( "abc" + i + j + k, i, j, k );
// Displays the values of the Array.
Console.WriteLine( "The three-dimensional Array contains the following values:" );
PrintValues( my3DArray );
}
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 three-dimensional Array 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
*/
Public Class SamplesArray
Public Shared Sub Main()
' Creates and initializes a three-dimensional Array of type Object.
Dim my3DArray As Array = Array.CreateInstance(GetType(Object), 2, 3, 4)
Dim i As Integer
For i = my3DArray.GetLowerBound(0) To my3DArray.GetUpperBound(0)
Dim j As Integer
For j = my3DArray.GetLowerBound(1) To my3DArray.GetUpperBound(1)
Dim k As Integer
For k = my3DArray.GetLowerBound(2) To my3DArray.GetUpperBound(2)
my3DArray.SetValue("abc" + i.ToString() _
+ j.ToString() + k.ToString(), i, j, k)
Next k
Next j
Next i
' Displays the values of the Array.
Console.WriteLine("The three-dimensional Array contains the " _
+ "following values:")
PrintValues(my3DArray)
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 three-dimensional Array 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
Комментарии
В отличие от большинства классов Array предоставляет CreateInstance метод, а не открытые конструкторы, чтобы обеспечить доступ с поздним связыванием.Unlike most classes, Array provides the CreateInstance method, instead of public constructors, to allow for late bound access.
Элементы ссылочного типа инициализируются значением null
.Reference-type elements are initialized to null
. Элементы типа значения инициализируются нулем.Value-type elements are initialized to zero.
Этот метод является n
операцией O (), где n
— это продукт length1
, length2
и length3
.This method is an O(n
) operation, where n
is the product of length1
, length2
, and length3
.