Type.MakeArrayType Methode

Definitie

Hiermee wordt een Type object geretourneerd dat een matrix van het huidige type vertegenwoordigt.

Overloads

Name Description
MakeArrayType()

Retourneert een object dat een Type eendimensionale matrix van het huidige type vertegenwoordigt, met een ondergrens van nul.

MakeArrayType(Int32)

Retourneert een Type object dat een matrix van het huidige type vertegenwoordigt, met het opgegeven aantal dimensies.

Voorbeelden

In het volgende codevoorbeeld worden matrix- ref (ByRef in Visual Basic) en de aanwijzertypen voor de klasse Test gemaakt.

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*

 */
type Example() =
    // A sample method with a ByRef parameter.
    member _.Test(e: Example byref) = ()

do
    // Create a Type object that represents a one-dimensional
    // array of Example objects.
    let t = typeof<Example>.MakeArrayType()
    printfn $"\r\nArray of Example: {t}"

    // Create a Type object that represents a two-dimensional
    // array of Example objects.
    let t = typeof<Example>.MakeArrayType 2
    printfn $"\r\nTwo-dimensional array of Example: {t}"

    // Demonstrate an exception when an invalid array rank is
    // specified.
    try
        let t = typeof<Example>.MakeArrayType -1
        ()
    with ex ->
        printfn $"\r\n{ex}"

    // Create a Type object that represents a ByRef parameter
    // of type Example.
    let t = typeof<Example>.MakeByRefType()
    printfn $"\r\nByRef Example: {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.
    let t2 = typeof<Example>
    let mi = t2.GetMethod "Test"
    let pi = mi.GetParameters()[0]
    let pt = pi.ParameterType
    printfn $"Are the ByRef types equal? {t = pt}"

    // Create a Type object that represents a pointer to an
    // Example object.
    let t = typeof<Example>.MakePointerType()
    printfn $"\r\nPointer to Example: {t}"

(* 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*
 *)
Imports System.Reflection

Public Class Example
    Public Shared Sub Main()
        ' Create a Type object that represents a one-dimensional
        ' array of Example objects.
        Dim t As Type = GetType(Example).MakeArrayType()
        Console.WriteLine(vbCrLf & "Array of Example: " & t.ToString())

        ' Create a Type object that represents a two-dimensional
        ' array of Example objects.
        t = GetType(Example).MakeArrayType(2)
        Console.WriteLine(vbCrLf & "Two-dimensional array of Example: " & t.ToString())

        ' Demonstrate an exception when an invalid array rank is
        ' specified.
        Try
            t = GetType(Example).MakeArrayType(-1)
        Catch ex As Exception
            Console.WriteLine(vbCrLf & ex.ToString())
        End Try

        ' Create a Type object that represents a ByRef parameter
        ' of type Example.
        t = GetType(Example).MakeByRefType()
        Console.WriteLine(vbCrLf & "ByRef Example: " & t.ToString())

        ' 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.
        Dim t2 As Type = GetType(Example)
        Dim mi As MethodInfo = t2.GetMethod("Test")
        Dim pi As ParameterInfo = mi.GetParameters()(0)
        Dim pt As Type = pi.ParameterType
        Console.WriteLine("Are the ByRef types equal? " & (t Is pt))

        ' Create a Type object that represents a pointer to an
        ' Example object.
        t = GetType(Example).MakePointerType()
        Console.WriteLine(vbCrLf & "Pointer to Example: " & t.ToString())
    End Sub

    ' A sample method with a ByRef parameter.
    '
    Public Sub Test(ByRef e As Example)
    End Sub
End Class

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

MakeArrayType()

Retourneert een object dat een Type eendimensionale matrix van het huidige type vertegenwoordigt, met een ondergrens van nul.

public:
 abstract Type ^ MakeArrayType();
public:
 virtual Type ^ MakeArrayType();
public abstract Type MakeArrayType();
public virtual Type MakeArrayType();
abstract member MakeArrayType : unit -> Type
abstract member MakeArrayType : unit -> Type
override this.MakeArrayType : unit -> Type
Public MustOverride Function MakeArrayType () As Type
Public Overridable Function MakeArrayType () As Type

Retouren

Een Type object dat een eendimensionale matrix van het huidige type vertegenwoordigt, met een ondergrens van nul.

Uitzonderingen

De aangeroepen methode wordt niet ondersteund in de basisklasse. Afgeleide klassen moeten een implementatie bieden.

Het huidige type is TypedReference.

– of –

Het huidige type is een ByRef type. Dat wil gezegd, IsByRef retourneert true.

Opmerkingen

De MakeArrayType methode biedt een manier om matrixtypen te genereren waarvan de elementtypen tijdens runtime worden berekend.

Opmerking De algemene taalruntime maakt een onderscheid tussen vectoren (dat wil gezegd eendimensionale matrices die altijd op nul zijn gebaseerd) en multidimensionale matrices. Een vector, die altijd slechts één dimensie heeft, is niet hetzelfde als een multidimensionale matrix die slechts één dimensie heeft. Deze overbelasting van de methode kan alleen worden gebruikt om vectortypen te maken en het is de enige manier om een vectortype te maken. Gebruik de overbelasting van de MakeArrayType(Int32) methode om multidimensionale matrixtypen te maken.

Zie ook

Van toepassing op

MakeArrayType(Int32)

Retourneert een Type object dat een matrix van het huidige type vertegenwoordigt, met het opgegeven aantal dimensies.

public:
 abstract Type ^ MakeArrayType(int rank);
public:
 virtual Type ^ MakeArrayType(int rank);
public abstract Type MakeArrayType(int rank);
public virtual Type MakeArrayType(int rank);
abstract member MakeArrayType : int -> Type
abstract member MakeArrayType : int -> Type
override this.MakeArrayType : int -> Type
Public MustOverride Function MakeArrayType (rank As Integer) As Type
Public Overridable Function MakeArrayType (rank As Integer) As Type

Parameters

rank
Int32

Het aantal dimensies voor de matrix. Dit getal moet kleiner zijn dan of gelijk zijn aan 32.

Retouren

Een object dat een matrix van het huidige type vertegenwoordigt, met het opgegeven aantal dimensies.

Uitzonderingen

rank is ongeldig. Bijvoorbeeld 0 of negatief.

De aangeroepen methode wordt niet ondersteund in de basisklasse.

Het huidige type is TypedReference.

– of –

Het huidige type is een ByRef type. Dat wil gezegd, IsByRef retourneert true.

– of –

rank is groter dan 32.

Opmerkingen

De MakeArrayType methode biedt een manier om matrixtypen te genereren waarvan de elementtypen tijdens runtime worden berekend.

Note

De algemene taalruntime maakt een onderscheid tussen vectoren (dat wil gezegd eendimensionale matrices die altijd op nul zijn gebaseerd) en multidimensionale matrices. Een vector, die altijd slechts één dimensie heeft, is niet hetzelfde als een multidimensionale matrix die slechts één dimensie heeft. U kunt deze methode niet overbelasten om een vectortype te maken; als rank dit 1 is, retourneert deze methodeoverbelasting een multidimensionaal matrixtype dat één dimensie heeft. Gebruik de overbelasting van de MakeArrayType() methode om vectortypen te maken.

Zie ook

Van toepassing op