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

Type.MakeArrayType-Methode: (Int32)

 

Gibt ein Type-Objekt zurück, das ein Array vom aktuellen Typ mit der angegebenen Anzahl von Dimensionen darstellt.

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

public virtual Type MakeArrayType(
	int rank
)

Parameter

rank
Type: System.Int32

Die Anzahl von Dimensionen für das Array. Diese Zahl muss kleiner oder gleich 32 sein.

Rückgabewert

Type: System.Type

Ein Objekt, das ein Array vom aktuellen Typ mit der angegebenen Anzahl von Dimensionen darstellt.

Exception Condition
IndexOutOfRangeException

rank ist ungültig. Beispielsweise 0 oder ein negativer Wert.

NotSupportedException

Die aufgerufene Methode wird in der Basisklasse nicht unterstützt.

TypeLoadException

Der aktuelle Typ ist TypedReference.

- oder -

Der aktuelle Typ ist ein ByRef-Typ. Das heißt, Type.IsByRef gibt true zurück.

- oder -

rank ist größer als 32.

Die MakeArrayType Methode bietet eine Möglichkeit zum Arraytypen generieren, deren Elementtypen zur Laufzeit berechnet werden.

System_CAPS_noteHinweis

Die common Language Runtime unterscheidet zwischen Vektoren (d. h. eindimensionale Arrays, die immer nullbasiert sind) und mehrdimensionale Arrays. Ein Vektor, der immer nur eine Dimension hat, ist nicht identisch mit einem mehrdimensionalen Array, das ausgeführt wird, nur eine Dimension aufweisen. Überladung dieser Methode können Sie um einen Vector-Typ zu erstellen. Wenn rank beträgt 1, Überladung dieser Methode gibt einen mehrdimensionales Array-Typ, der an eine Dimension über zurück. Verwenden der MakeArrayType() -methodenüberladung vektortypen zu erstellen.

Im folgenden Codebeispiel wird erstellt, Array, ref (ByRef in Visual Basic), und Zeigertypen für die Test Klasse.

using System;
using System.Reflection;

public class Example
{
    public static void Main()
    {
        // Create a Type object that represents a one-dimensional
        // array of Example objects.
        Type t = typeof(Example).MakeArrayType();
        Console.WriteLine("\r\nArray of Example: {0}", t);

        // Create a Type object that represents a two-dimensional
        // array of Example objects.
        t = typeof(Example).MakeArrayType(2);
        Console.WriteLine("\r\nTwo-dimensional array of Example: {0}", t);

        // Demonstrate an exception when an invalid array rank is
        // specified.
        try
        {
            t = typeof(Example).MakeArrayType(-1);
        }
        catch(Exception ex)
        {
            Console.WriteLine("\r\n{0}", ex);
        }

        // Create a Type object that represents a ByRef parameter
        // of type Example.
        t = typeof(Example).MakeByRefType();
        Console.WriteLine("\r\nByRef Example: {0}", t);

        // Get a Type object representing the Example class, a
        // MethodInfo representing the "Test" method, a ParameterInfo
        // representing the parameter of type Example, and finally
        // a Type object representing the type of this ByRef parameter.
        // Compare this Type object with the Type object created using
        // MakeByRefType.
        Type t2 = typeof(Example);
        MethodInfo mi = t2.GetMethod("Test");
        ParameterInfo pi = mi.GetParameters()[0];
        Type pt = pi.ParameterType;
        Console.WriteLine("Are the ByRef types equal? {0}", (t == pt));

        // Create a Type object that represents a pointer to an
        // Example object.
        t = typeof(Example).MakePointerType();
        Console.WriteLine("\r\nPointer to Example: {0}", t);
    }

    // A sample method with a ByRef parameter.
    //
    public void Test(ref Example e)
    {
    }
}

/* This example produces output similar to the following:

Array of Example: Example[]

Two-dimensional array of Example: Example[,]

System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at System.RuntimeType.MakeArrayType(Int32 rank) in c:\vbl\ndp\clr\src\BCL\System\RtType.cs:line 2999
   at Example.Main()

ByRef Example: Example&
Are the ByRef types equal? True

Pointer to Example: Example*

 */

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