Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Array.CreateInstance-Methode: (Type, Int32[], Int32[])

 

Veröffentlicht: Oktober 2016

Erstellt ein mehrdimensionales Array vom angegebenen Type mit der für jede Dimension angegebenen Länge und Untergrenze.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

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

Parameter

elementType
Type: System.Type

Der Type des zu erstellenden Array.

lengths
Type: System.Int32[]

Ein eindimensionales Array mit den Größen aller Dimensionen des zu erstellenden Array.

lowerBounds
Type: System.Int32[]

Ein eindimensionales Array mit der unteren Grenze (Startindex) für jede Dimension des zu erstellenden Array.

Rückgabewert

Type: System.Array

Ein neues mehrdimensionales Array vom angegebenen Type mit der für jede Dimension angegebenen Länge und Untergrenze.

Exception Condition
ArgumentNullException

elementType ist null.

- oder -

lengths ist null.

- oder -

lowerBounds ist null.

ArgumentException

elementType ist kein gültiger Type.

- oder -

Das lengths-Array enthält kein Element.

- oder -

Das lengths- und das lowerBounds-Array enthalten nicht dieselbe Anzahl von Elementen.

NotSupportedException

elementType wird nicht unterstützt. Beispielsweise wird Void nicht unterstützt.

- oder -

elementType ist ein offener generischer Typ.

ArgumentOutOfRangeException

Irgendein Wert in lengths ist kleiner als 0 (null).

- oder -

Irgendein Wert in lowerBounds ist sehr groß, so dass die Summe aus Untergrenze und Länge einer Dimension größer ist als Int32.MaxValue.

Im Gegensatz zu den meisten Klassen Array bietet die CreateInstance -Methode, statt öffentliche Konstruktoren, um spät gebundener Zugriff zu ermöglichen.

Die lengths und lowerBounds Arrays müssen die gleiche Anzahl von Elementen aufweisen. Die Anzahl der Elemente in der lengths Array muss gleich der Anzahl der Dimensionen im neuen Array.

Jedes Element der lengths Array muss die Länge der entsprechenden Dimension angeben, in der neuen Array.

Jedes Element der lowerBounds Array muss die untere Grenze der entsprechenden Dimension angeben, in der neuen Array. Der .NET Framework-Klassenbibliothek und viele Programmiersprachen unterstützen im Allgemeinen nicht von ungleich unteren Grenzen.

Verweistyp-Elemente werden mit initialisiert null. Werttyp Elemente werden mit 0 (null) initialisiert.

Diese Methode ist eine O (n) Vorgang, wobei n ist das Produkt aller Werte in lengths.

Im folgenden Codebeispiel wird veranschaulicht, wie zum Erstellen und initialisieren Sie ein mehrdimensionales Array mit der angegebenen Untergrenze.

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

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: