Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Type.MakeArrayType méthode ()

 

Date de publication : novembre 2016

Retourne un objet Type qui représente un tableau unidimensionnel du type actuel, avec une limite inférieure de zéro.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

public virtual Type MakeArrayType()

Valeur de retour

Type: System.Type

Objet Type qui représente un tableau unidimensionnel du type actuel, avec une limite inférieure de zéro.

Exception Condition
NotSupportedException

La méthode appelée n’est pas prise en charge dans la classe de base. Les classes dérivées doivent fournir une implémentation.

TypeLoadException

Le type actuel est TypedReference.

ou

Le type actuel est un type ByRef. Autrement dit, Type.IsByRef retourne true.

Le MakeArrayType méthode permet de générer des types tableau dont les types d’élément sont calculés au moment de l’exécution.

Remarque   le common language runtime établit une distinction entre les vecteurs (autrement dit, les tableaux unidimensionnels qui sont toujours de base zéro) et les tableaux multidimensionnels. Un vecteur, qui a toujours une seule dimension, n’est pas identique à un tableau multidimensionnel qui paradoxalement n’a qu’une seule dimension. Cette surcharge de méthode peut uniquement être utilisée pour créer des types vectoriels, et elle est la seule façon de créer un type vectoriel. Utilisez la MakeArrayType(Int32) la surcharge de méthode pour créer des types de tableaux multidimensionnels.

L’exemple de code suivant crée le tableau, ref (ByRef en Visual Basic) et les types de pointeur pour la Test classe.

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*

 */

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 2.0
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: