Ler em inglês

Partilhar via


Type.MakeArrayType Método

Definição

Retorna um objeto Type que representa uma matriz do tipo atual.

Sobrecargas

MakeArrayType()

Retorna um objeto Type que representa uma matriz unidimensional do tipo atual, com um limite inferior de zero.

MakeArrayType(Int32)

Retorna um objeto Type que representa uma matriz do tipo atual, com o número de dimensões especificado.

Exemplos

O exemplo de código a seguir cria a matriz, ref (ByRef no Visual Basic) e os tipos de ponteiro para a classe Test.

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()

Origem:
Type.cs
Origem:
Type.cs
Origem:
Type.cs

Retorna um objeto Type que representa uma matriz unidimensional do tipo atual, com um limite inferior de zero.

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

Retornos

Um objeto Type que representa uma matriz unidimensional do tipo atual, com um limite inferior de zero.

Exceções

O método chamado não é suportado na classe base. As classes derivadas devem fornecer uma implementação.

O tipo atual é TypedReference.

- ou -

O tipo atual é um tipo ByRef. Ou seja, IsByRef retorna true.

Comentários

O MakeArrayType método fornece uma maneira de gerar tipos de matriz cujos tipos de elemento são calculados em tempo de execução.

Nota O Common Language Runtime faz uma distinção entre vetores (ou seja, matrizes unidimensionais sempre baseadas em zero) e matrizes multidimensionais. Um vetor, que sempre tem apenas uma dimensão, não é o mesmo que uma matriz multidimensional que tem apenas uma dimensão. Essa sobrecarga de método só pode ser usada para criar tipos de vetor e é a única maneira de criar um tipo de vetor. Use a sobrecarga do MakeArrayType(Int32) método para criar tipos de matriz multidimensional.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
Type.cs
Origem:
Type.cs
Origem:
Type.cs

Retorna um objeto Type que representa uma matriz do tipo atual, com o número de dimensões especificado.

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

Parâmetros

rank
Int32

O número de dimensões da matriz. Esse número deve ser menor ou igual a 32.

Retornos

Um objeto que representa uma matriz do tipo atual, com o número de dimensões especificado.

Exceções

rank é inválido. Por exemplo, 0 ou negativo.

O método chamado não é suportado na classe base.

O tipo atual é TypedReference.

- ou -

O tipo atual é um tipo ByRef. Ou seja, IsByRef retorna true.

- ou -

rank é maior que 32.

Comentários

O MakeArrayType método fornece uma maneira de gerar tipos de matriz cujos tipos de elemento são calculados em tempo de execução.

Nota

O Common Language Runtime faz uma distinção entre vetores (ou seja, matrizes unidimensionais sempre baseadas em zero) e matrizes multidimensionais. Um vetor, que sempre tem apenas uma dimensão, não é o mesmo que uma matriz multidimensional que tem apenas uma dimensão. Você não pode usar essa sobrecarga de método para criar um tipo de vetor; se rank for 1, essa sobrecarga de método retornará um tipo de matriz multidimensional que tem uma dimensão. Use a sobrecarga do MakeArrayType() método para criar tipos de vetor.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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