Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Array.CreateInstance (Type, Int32[])

 

Publicado: octubre de 2016

Crea una Array multidimensional de las longitudes de dimensión y el tipo Type especificados, con una indización de base cero. Las longitudes de dimensión se especifican en una matriz de enteros de 32 bits.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static Array CreateInstance(
	Type elementType,
	params int[] lengths
)

Parámetros

elementType
Type: System.Type

Type de la Array que se va a crear.

lengths
Type: System.Int32[]

Matriz de enteros de 32 bits que representa el tamaño de cada una de las dimensiones de Array que se van a crear.

Valor devuelto

Type: System.Array

Nueva matriz Array multidimensional del tipo Type especificado con la longitud especificada para cada dimensión, usando una indización de base cero.

Exception Condition
ArgumentNullException

El valor de elementType es null.

-o-

El valor de lengths es null.

ArgumentException

elementType no es un Type válido.

-o-

La matriz lengths contiene menos de un elemento.

NotSupportedException

No se admite elementType. Por ejemplo, no se admite Void.

-o-

elementType es un tipo genérico abierto.

ArgumentOutOfRangeException

Cualquier valor en lengths es menor que cero.

A diferencia de la mayoría de las clases, Array proporciona el CreateInstance método, en lugar de constructores públicos, para permitir el acceso en tiempo de ejecución.

El número de elementos de la lengths matriz debe ser igual al número de dimensiones en el nuevo Array. Cada elemento de la lengths matriz debe especificar la longitud de la dimensión correspondiente en el nuevo Array.

Elementos de tipo de referencia se inicializan en null. Elementos de tipo de valor se inicializan en cero.

Este método es una O (n) operación, donde n es el producto de todos los valores de lengths.

En el ejemplo de código siguiente se muestra cómo crear e inicializar un multidimensionales Array.

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
*/

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: