Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe ParamArrayAttribute

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

System.Object
  System.Attribute
    System.ParamArrayAttribute

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

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

Il tipo ParamArrayAttribute espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreParamArrayAttributeInizializza una nuova istanza di ParamArrayAttribute classe con le proprietà predefinite.
In alto

  NomeDescrizione
Proprietà pubblicaTypeId Quando implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute)
In alto

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEqualsInfrastruttura. Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato. (Ereditato da Attribute)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetHashCode Restituisce il codice hash per questa istanza. (Ereditato da Attribute)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoIsDefaultAttribute 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)
Metodo pubblicoSupportato da XNA FrameworkMatch 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)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto

  NomeDescrizione
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetIDsOfNames Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetTypeInfo Recupera le informazioni sui tipi per un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.Invoke Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da Attribute)
In alto

ParamArrayAttribute indica che un parametro del metodo è una matrice di parametri. Una matrice di parametri consente la specifica di un numero sconosciuto degli 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, argomenti di autorizzazioni di una matrice di parametri a un metodo da specificare nell'in due modi diversi:

  • Come singola espressione di un tipo che sono implicitamente convertibile nel tipo di matrice di parametri. Le funzioni della matrice di parametri come parametro di valore.

  • Come zero o più argomenti, in cui ciascun argomento sia un'espressione di un tipo che è implictly convertibile nel tipo di elemento della matrice di parametri.

Esempio nella sezione successiva vengono illustrate entrambe le convenzioni di chiamata.

NotaNota

in genere, ParamArrayAttribute non viene utilizzato direttamente nel codice. Al contrario, le singole parole chiave del linguaggio, ad esempio ParamArray in Visual Basic e params in c#, vengono utilizzati come wrapper per ParamArrayAttribute classe. Alcuni linguaggi, quali c#, è possibile richiedere l'utilizzo della parola chiave del linguaggio e impedire l'utilizzo di ParamArrayAttribute.

Durante la risoluzione dell'overload, quando i compilatori che supportano le matrici di parametri rilevano un overload del metodo che non esiste ma uno meno parametro che un overload che include una matrice di parametri, sostituiranno il metodo con l'overload che include la matrice di parametri. Ad esempio, una chiamata a String.Split() metodo di istanza (non presente in String la classe) viene risolta la chiamata a String.Split(Char[]) metodo. Il compilatore passerà ancora una matrice vuota del tipo richiesto al metodo. Ciò significa che il metodo deve essere preparato sempre gestire una matrice della cui lunghezza è zero quando elabora gli elementi nella matrice di parametri. L'esempio si riferisce.

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

Nell'esempio seguente viene definito un oggetto Temperature classe che include un oggetto Display metodo, per visualizzare uno o più valori formattati della temperatura. Il metodo dispone di un solo parametro, formats, che viene definito come 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 { }
         }
      }
   }
}


Nell'esempio seguente vengono illustrati tre chiamate diverse a Temperature.Display metodo. Nel primo, il metodo viene passata una matrice di stringhe di formato. Nel secondo, il metodo viene passato a quattro singole stringhe di formato come argomenti. Nel terzo, il metodo viene chiamato senza argomenti. Mentre l'output dell'esempio riportato di seguito, i compilatori Visual Basic e c# vengono tradotti in chiamata a 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


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft