Exportar (0) Imprimir
Expandir todo

Type.MakeArrayType (Método) (Int32)

Actualización: noviembre 2007

Devuelve un objeto Type que representa una matriz del tipo actual, con el número de dimensiones especificado.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

public virtual Type MakeArrayType(
	int rank
)
public Type MakeArrayType(
	int rank
)
public function MakeArrayType(
	rank : int
) : Type

Parámetros

rank
Tipo: System.Int32
Número de dimensiones de la matriz.

Valor devuelto

Tipo: System.Type
Objeto Type que representa una matriz del tipo actual, con el número de dimensiones especificado.

ExcepciónCondición
IndexOutOfRangeException

rank no es válido. Por ejemplo, 0 o negativo.

NotSupportedException

El método invocado no se admite en la clase base.

El método MakeArrayType proporciona un modo de generar tipos de matriz cuyos tipos de elemento se calculan en tiempo de ejecución.

w0ykk2sw.alert_note(es-es,VS.90).gifNota:

Common Language Runtime distingue entre vectores (es decir, matrices unidimensionales que siempre son de base cero) y matrices multidimensionales. Un vector, que sólo tiene una dimensión en todo momento, no es lo mismo que una matriz multidimensional que tenga ocasionalmente una sola dimensión. Esta sobrecarga del método no se puede utilizar para crear un tipo de vector; si rank es 1, la sobrecarga devuelve un tipo de matriz multidimensional que sólo tiene una dimensión. Para crear tipos de vector, utilice la sobrecarga del método MakeArrayType().

En el código de ejemplo siguiente se crea una matriz, ref (ByRef en Visual Basic), y tipos de puntero para la clase Test.

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*

 */


import System.*;
import System.Reflection.*;

public class Example
{
    public static void main(String[] args)
    {
        // Create a Type object that represents a one-dimensional
        // array of Example objects.
        Type t = Example.class.ToType().MakeArrayType();
        Console.WriteLine("\r\nArray of Example: {0}", t);
        // Create a Type object that represents a two-dimensional
        // array of Example objects.
        t = Example.class.ToType().MakeArrayType(2);
        Console.WriteLine("\r\nTwo-dimensional array of Example: {0}", t);
        // Demonstrate an exception when an invalid array rank is
        // specified.
        try {
            t = Example.class.ToType().MakeArrayType(-1);
        }
        catch (System.Exception ex) {
            Console.WriteLine("\r\n{0}", ex);
        }
        // Create a Type object that represents a ByRef parameter
        // of type Example.
        t = Example.class.ToType().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 = Example.class.ToType();
        MethodInfo mi = t2.GetMethod("Test");
        ParameterInfo pi = mi.GetParameters()[0];
        Type pt = pi.get_ParameterType();
        Console.WriteLine("Are the ByRef types equal? {0}", new 
            Boolean(t == pt));
        // Create a Type object that represents a pointer to an
        // Example object.
        t = Example.class.ToType().MakePointerType();
        Console.WriteLine("\r\nPointer to Example: {0}", t);
    } //main

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

/* 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.jsl:line 2999
   at Example.main()

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

Pointer to Example: Example*

 */


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft