Array.CreateInstance Метод

Определение

Инициализирует новый экземпляр класса Array.Initializes a new instance of the Array class.

Перегрузки

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)

Создает одномерный массив Array указанного типа Type и длины, индексация которого начинается с нуля.Creates a one-dimensional Array of the specified Type and length, with zero-based indexing.

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

Параметры

elementType
Type

Тип Type массива Array, который требуется создать.The Type of the Array to create.

length
Int32

Размер массива Array, который требуется создать.The size of the Array to create.

Возвращаемое значение

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 не является допустимым Type.elementType is not a valid Type.

Тип 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

Параметры

elementType
Type

Тип Type массива Array, который требуется создать.The Type of the Array to create.

lengths
Int32[]

Массив 32-разрядных целых чисел, представляющих размер каждого измерения массива Array, который нужно создать.An array of 32-bit integers that represent the size of each dimension of the Array to create.

Возвращаемое значение

Array

Новый многомерный массив 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

Параметры

elementType
Type

Тип Type массива Array, который требуется создать.The Type of the Array to create.

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

Новый многомерный массив 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)

Создает двумерный массив Array указанного типа Type с заданными длинами измерений и индексацией, начинающейся с нуля.Creates a two-dimensional Array of the specified Type and dimension lengths, with zero-based indexing.

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

Параметры

elementType
Type

Тип Type массива Array, который требуется создать.The Type of the Array to create.

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

Новый двумерный массив 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 не является допустимым Type.elementType is not a valid Type.

Тип 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[])

Создает многомерный массив Array с указанным типом Type и длиной по измерениям и с заданными нижними границами.Creates a multidimensional Array of the specified Type and dimension lengths, with the specified lower bounds.

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

Параметры

elementType
Type

Тип Type массива Array, который требуется создать.The Type of the Array to create.

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

Новый многомерный массив 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
*/
Public Class SamplesArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a multidimensional Array of type String.
        Dim myLengthsArray() As Integer = {3, 5}
        Dim myBoundsArray() As Integer = {2, 3}
        Dim myArray As Array = Array.CreateInstance(GetType(String), _
           myLengthsArray, myBoundsArray)
        Dim i, j As Integer
        Dim myIndicesArray() As Integer
        For i = myArray.GetLowerBound(0) To myArray.GetUpperBound(0)
            For j = myArray.GetLowerBound(1) To myArray.GetUpperBound(1)
                myIndicesArray = New Integer() {i, j}
                myArray.SetValue(i.ToString() + j.ToString(), myIndicesArray)
            Next j
        Next i
        
        ' Displays the lower bounds and the upper bounds of each dimension.
        Console.WriteLine("Bounds:" + ControlChars.Tab + "Lower" _
           + ControlChars.Tab + "Upper")
        For i = 0 To myArray.Rank - 1
            Console.WriteLine("{0}:" + ControlChars.Tab + "{1}" _
               + ControlChars.Tab + "{2}", i, myArray.GetLowerBound(i), _
               myArray.GetUpperBound(i))
        Next i
        
        ' Displays the values of the Array.
        Console.WriteLine("The Array contains the following values:")
        PrintValues(myArray)
    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.
' 
' 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 Framework и многие языки программирования не обрабатывали ненулевые нижние границы.Generally, the .NET Framework class library and many programming languages do not handle nonzero 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)

Создает трехмерный массив Array указанного типа Type с заданными длинами по измерениям и индексацией, начинающейся с нуля.Creates a three-dimensional Array of the specified Type and dimension lengths, with zero-based indexing.

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

Параметры

elementType
Type

Тип Type массива Array, который требуется создать.The Type of the Array to create.

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

Новый трехмерный массив 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 не является допустимым Type.elementType is not a valid Type.

Тип 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.

Применяется к