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

ParamArrayAttribute classe

 

Date de publication : novembre 2016

Indique qu’une méthode autorisera un nombre variable d’arguments dans son appel. Cette classe ne peut pas être héritée.

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

System.Object
  System.Attribute
    System.ParamArrayAttribute

[AttributeUsageAttribute(AttributeTargets.Parameter, Inherited = true, 
	AllowMultiple = false)]
[ComVisibleAttribute(true)]
public sealed class ParamArrayAttribute : Attribute

NomDescription
System_CAPS_pubmethodParamArrayAttribute()

Initialise une nouvelle instance de la classe ParamArrayAttribute avec des propriétés par défaut.

NomDescription
System_CAPS_pubpropertyTypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.(Hérité de Attribute.)

NomDescription
System_CAPS_pubmethodEquals(Object)

Cette API prend en charge l’infrastructure de produit et n’est pas destinée à être utilisée directement depuis votre code. Retourne une valeur qui indique si cette instance est égale à un objet spécifié.(Hérité de Attribute.)

System_CAPS_pubmethodGetHashCode()

Retourne le code de hachage de cette instance.(Hérité de Attribute.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_pubmethodIsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.(Hérité de Attribute.)

System_CAPS_pubmethodMatch(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance équivaut à un objet spécifié.(Hérité de Attribute.)

System_CAPS_pubmethodToString()

Retourne une chaîne qui représente l'objet actuel.(Hérité de Object.)

NomDescription
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.(Hérité de Attribute.)

La ParamArrayAttribute indique qu’un paramètre de méthode est un tableau de paramètres. Un tableau de paramètres permet de spécifier un nombre inconnu d’arguments. Un tableau de paramètres doit être le dernier paramètre dans une liste de paramètres formels et doit être un tableau unidimensionnel. Lorsque la méthode est appelée, un tableau de paramètres permet des arguments à une méthode doit être spécifié dans une des deux façons :

  • Comme une seule expression d’un type qui est implicitement convertible en type tableau de paramètres. Le tableau de paramètres fonctionne comme un paramètre de valeur.

  • Comme zéro ou plusieurs arguments où chaque argument est une expression d’un type qui est implicitement convertible au type de l’élément de tableau de paramètres.

L’exemple dans la section suivante illustre les deux conventions d’appel.

System_CAPS_noteRemarque

En règle générale, le ParamArrayAttribute n’est pas utilisé directement dans le code. Au lieu de cela, mots clés de langage individuels, tels que ParamArray en Visual Basic et params en langage c#, sont utilisés comme wrappers pour la ParamArrayAttribute classe. Certains langages, tels que c#, peuvent même requièrent l’utilisation du mot clé de langage et interdire l’utilisation de ParamArrayAttribute.

Lors de la résolution de surcharge, lorsque les compilateurs qui prennent en charge les tableaux de paramètres rencontrent une surcharge de méthode qui n’existe pas mais a moins de paramètres qu’une surcharge qui inclut un tableau de paramètres, ils remplace la méthode par la surcharge qui inclut le tableau de paramètres. Par exemple, un appel à la String.Split() méthode d’instance (qui n’existe pas dans la String classe) est résolu comme un appel à la String.Split(Char[]) (méthode). Le compilateur passera également un tableau vide du type requis à la méthode. Cela signifie que la méthode doit toujours être préparée à gérer un tableau dont la longueur est nulle lorsqu’il traite les éléments dans le tableau de paramètres. Cet exemple en fournit une illustration.

Pour plus d'informations sur l'utilisation d'attributs, consultez Extension des métadonnées à l'aide des attributs.

L’exemple suivant définit un Temperature classe incluant un Display méthode, qui sert à afficher une ou plusieurs valeurs de température mises en forme. La méthode possède un seul paramètre, formats, qui est défini comme un tableau de paramètres.

using System;

public class Temperature
{ 
   private decimal temp;

   public Temperature(decimal temperature)
   {
      this.temp = temperature;
   }

   public override string ToString() 
   {
      return ToString("C");
   }

   public string ToString(string format)
   {
      if (String.IsNullOrEmpty(format))
         format = "G";

      switch (format.ToUpper())
      {
         case "G":
         case "C":
            return temp.ToString("N") + "  °C";
         case "F":
            return (9 * temp / 5 + 32).ToString("N") + "  °F";
         case "K": 
            return (temp + 273.15m).ToString("N") + "  °K";
         default:
            throw new FormatException(String.Format("The '{0}' format specifier is not supported", 
                                                    format));
      }                                                         
   }         

   public void Display(params string []formats)
   {
      if (formats.Length == 0)
      {
         Console.WriteLine(this.ToString("G"));
      }
      else  
      { 
         foreach (string format in formats)
         {
            try {
               Console.WriteLine(this.ToString(format));
            }
            // If there is an exception, do nothing.
            catch { }
         }
      }
   }
}

L’exemple suivant illustre trois appels différents à la Temperature.Display (méthode). Dans le premier, un tableau de chaînes de format est passé à la méthode. Dans la seconde, est passé à la méthode quatre chaînes de format comme arguments. Dans la troisième, la méthode est appelée sans argument. Comme l’illustre la sortie de l’exemple, les compilateurs c# et Visual Basic transforment ceci en appel à la Display méthode avec un tableau de chaînes vide.

public class Class1
{
   public static void Main()
   {
      Temperature temp1 = new Temperature(100);
      string[] formats = { "C", "G", "F", "K" }; 

      // Call Display method with a string array.
      Console.WriteLine("Calling Display with a string array:");
      temp1.Display(formats);
      Console.WriteLine();

      // Call Display method with individual string arguments.
      Console.WriteLine("Calling Display with individual arguments:");
      temp1.Display("C", "F", "K", "G");
      Console.WriteLine();

      // Call parameterless Display method.
      Console.WriteLine("Calling Display with an implicit parameter array:");
      temp1.Display();
   }
}
// The example displays the following output:
//       Calling Display with a string array:
//       100.00  °C
//       100.00  °C
//       212.00  °F
//       373.15  °K
//       
//       Calling Display with individual arguments:
//       100.00  °C
//       212.00  °F
//       373.15  °K
//       100.00  °C
//       
//       Calling Display with an implicit parameter array:
//       100.00  °C

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
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

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: