Leggi in inglese

Condividi tramite


Type.MakeArrayType Metodo

Definizione

Restituisce un oggetto Type che rappresenta una matrice del tipo corrente.

Overload

MakeArrayType()

Restituisce un oggetto Type che rappresenta una matrice unidimensionale del tipo corrente, con limite inferiore zero.

MakeArrayType(Int32)

Restituisce un oggetto Type che rappresenta una matrice del tipo corrente, con il numero specificato di dimensioni.

Esempio

L'esempio di codice seguente crea matrice, ( refByRef in Visual Basic) e tipi di puntatore per la Test classe.

C#
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*

 */

MakeArrayType()

Origine:
Type.cs
Origine:
Type.cs
Origine:
Type.cs

Restituisce un oggetto Type che rappresenta una matrice unidimensionale del tipo corrente, con limite inferiore zero.

C#
public abstract Type MakeArrayType ();
C#
public virtual Type MakeArrayType ();

Restituisce

Oggetto Type che rappresenta una matrice unidimensionale del tipo corrente, con limite inferiore zero.

Eccezioni

Il metodo richiamato non è supportato nella classe base. Le classi derivate devono fornire un'implementazione.

Il tipo corrente è TypedReference.

-oppure-

Il tipo corrente è ByRef, Ciò significa che IsByRef restituisce true.

Commenti

Il MakeArrayType metodo consente di generare tipi di matrice i cui tipi di elemento vengono calcolati in fase di esecuzione.

Nota Common Language Runtime fa una distinzione tra vettori , ovvero matrici unidimensionali sempre basate su zero e matrici multidimensionali. Un vettore, che ha sempre una sola dimensione, non è uguale a una matrice multidimensionale che accade di avere una sola dimensione. Questo overload di metodo può essere usato solo per creare tipi di vettore ed è l'unico modo per creare un tipo vettore. Usare l'overload del MakeArrayType(Int32) metodo per creare tipi di matrice multidimensionali.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

MakeArrayType(Int32)

Origine:
Type.cs
Origine:
Type.cs
Origine:
Type.cs

Restituisce un oggetto Type che rappresenta una matrice del tipo corrente, con il numero specificato di dimensioni.

C#
public abstract Type MakeArrayType (int rank);
C#
public virtual Type MakeArrayType (int rank);

Parametri

rank
Int32

Numero di dimensioni della matrice. Il numero deve essere minore o uguale a 32.

Restituisce

Oggetto che rappresenta una matrice del tipo corrente, con il numero specificato di dimensioni.

Eccezioni

rank non è valido. Ad esempio, 0 o negativo.

Il metodo richiamato non è supportato nella classe base.

Il tipo corrente è TypedReference.

-oppure-

Il tipo corrente è ByRef, Ciò significa che IsByRef restituisce true.

-oppure-

rank è maggiore di 32.

Commenti

Il MakeArrayType metodo consente di generare tipi di matrice i cui tipi di elemento vengono calcolati in fase di esecuzione.

Nota

Common Language Runtime fa una distinzione tra vettori , ovvero matrici unidimensionali sempre basate su zero e matrici multidimensionali. Un vettore, che ha sempre una sola dimensione, non è uguale a una matrice multidimensionale che accade di avere una sola dimensione. Non è possibile usare questo overload del metodo per creare un tipo di vettore; se rank è 1, questo overload del metodo restituisce un tipo di matrice multidimensionale che accade per avere una dimensione. Usare l'overload del MakeArrayType() metodo per creare tipi di vettore.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0