Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe ParamArrayAttribute

 

Data di pubblicazione: ottobre 2016

Indica che un metodo consentirà un numero variabile di argomenti nella chiamata. Questa classe non può essere ereditata.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Attribute
    System.ParamArrayAttribute

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

NomeDescrizione
System_CAPS_pubmethodParamArrayAttribute()

Inizializza una nuova istanza della classe ParamArrayAttribute con le proprietà predefinite.

NomeDescrizione
System_CAPS_pubpropertyTypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.(Ereditato da Attribute.)

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato. (Ereditato da Attribute.)

System_CAPS_pubmethodGetHashCode()

Restituisce il codice hash per questa istanza. (Ereditato da Attribute.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Quando viene eseguito l'override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute.)

System_CAPS_pubmethodMatch(Object)

Quando viene eseguito l'override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute.)

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

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

Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sui tipi per un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da Attribute.)

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

Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da Attribute.)

Il ParamArrayAttribute indica che un parametro di metodo è una matrice di parametri. Una matrice di parametri consente di specificare un numero indefinito di argomenti. Una matrice di parametri deve essere l'ultimo parametro in un elenco di parametri formali e deve essere una matrice unidimensionale. Quando viene chiamato il metodo, una matrice di parametri gli argomenti a un metodo per specificare uno dei due modi:

  • Come una singola espressione di un tipo convertibile in modo implicito nel tipo di parametro matrice. Matrice di parametri funziona come un parametro di valore.

  • Come zero o più argomenti, dove ogni argomento è un'espressione di un tipo in modo implicito nel tipo di elemento della matrice di parametri.

L'esempio nella sezione successiva illustra entrambi convenzioni di chiamata.

System_CAPS_noteNota

In genere, il ParamArrayAttribute non viene utilizzato direttamente nel codice. Invece, singole parole chiave, ad esempio ParamArray in Visual Basic e params in c#, vengono utilizzati come wrapper per la ParamArrayAttribute classe. Alcuni linguaggi, quali c#, potrebbero anche richiedere l'utilizzo della parola chiave language e proibire l'utilizzo di ParamArrayAttribute.

Durante la risoluzione dell'overload, quando i compilatori che supportano le matrici di parametri rilevato un overload del metodo che non esiste, ma dispone di un parametro di un numero inferiore rispetto a un overload che include una matrice di parametri, verrà sostituiscono il metodo con l'overload che include la matrice di parametri. Ad esempio, una chiamata al String.Split() metodo di istanza (che non esiste nella String classe) viene risolto come una chiamata al String.Split(Char[]) (metodo). Il compilatore passerà anche una matrice vuota di tipo richiesto per il metodo. Ciò significa che il metodo deve essere sempre pronti a gestire una matrice la cui lunghezza è pari a zero quando elabora gli elementi nella matrice del parametro. Nell'esempio viene illustrata una situazione di questo tipo.

Per ulteriori informazioni sull'utilizzo degli attributi, vedere Estensione di metadati mediante attributi.

L'esempio seguente definisce una Temperature classe che include un Display metodo, che si intende visualizzare uno o più valori di temperatura formattati. Il metodo ha un solo parametro, formats, che viene definito come una matrice di parametri.

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'esempio seguente illustra tre diverse chiamate per il Temperature.Display metodo. Nel primo, il metodo viene passato una matrice di stringhe di formato. Nel secondo caso il metodo verrà passato quattro stringhe di formato singoli come argomenti. Nel terzo, il metodo viene chiamato senza argomenti. Come illustrato nell'output di esempio, i compilatori Visual Basic e c# traducono questo codice in una chiamata al Display metodo con una matrice di stringa vuota.

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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: