Ler en inglés

Compartir por


ParamArrayAttribute Clase

Definición

Indica que un método permitirá a un número variable de argumentos en la invocación. Esta clase no puede heredarse.

C#
[System.AttributeUsage(System.AttributeTargets.Parameter, AllowMultiple=false, Inherited=true)]
public sealed class ParamArrayAttribute : Attribute
C#
[System.AttributeUsage(System.AttributeTargets.Parameter, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ParamArrayAttribute : Attribute
Herencia
ParamArrayAttribute
Atributos

Ejemplos

En el ejemplo siguiente se define una Temperature clase que incluye un Display método , que está pensado para mostrar uno o varios valores de temperatura con formato. El método tiene un único parámetro, formats, que se define como una matriz de parámetros.

C#
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 { }
         }
      }
   }
}

En el ejemplo siguiente se muestran tres llamadas diferentes al Temperature.Display método . En el primero, el método se pasa una matriz de cadenas de formato. En el segundo, el método se pasa cuatro cadenas de formato individual como argumentos. En el tercero, se llama al método sin argumentos. Como se muestra en la salida del ejemplo, los compiladores de Visual Basic y C# lo traducen en una llamada al Display método con una matriz de cadenas vacía.

C#
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

Comentarios

ParamArrayAttribute indica que un parámetro de método es una matriz de parámetros. Una matriz de parámetros permite la especificación de un número desconocido de argumentos. Una matriz de parámetros debe ser el último parámetro de una lista de parámetros formal y debe ser una matriz de una sola dimensión. Cuando se llama al método , una matriz de parámetros permite especificar argumentos a un método de dos maneras:

  • Como expresión única de un tipo que se puede convertir implícitamente en el tipo de matriz de parámetros. La matriz de parámetros funciona como un parámetro de valor.

  • Como cero o más argumentos, donde cada argumento es una expresión de un tipo que se puede convertir implícitamente al tipo del elemento de matriz de parámetros.

En el ejemplo de la sección siguiente se muestran ambas convenciones de llamada.

Nota

Normalmente, ParamArrayAttribute no se usa directamente en el código. En su lugar, las palabras clave de lenguaje individuales, como ParamArray en Visual Basic y params en C#, se usan como contenedores para la ParamArrayAttribute clase . Algunos lenguajes, como C#, pueden incluso requerir el uso de la palabra clave del lenguaje y prohibir el uso de ParamArrayAttribute.

Durante la resolución de sobrecargas, cuando los compiladores que admiten matrices de parámetros encuentran una sobrecarga de método que no existe, pero tienen un parámetro menor que una sobrecarga que incluye una matriz de parámetros, reemplazarán el método por la sobrecarga que incluye la matriz de parámetros. Por ejemplo, una llamada al String.Split() método de instancia (que no existe en la String clase) se resuelve como una llamada al String.Split(Char[]) método . El compilador también pasará una matriz vacía del tipo necesario al método . Esto significa que el método siempre debe estar preparado para controlar una matriz cuya longitud es cero cuando procesa los elementos de la matriz de parámetros. En este ejemplo se ilustra.

Para obtener más información sobre el uso de atributos, vea Atributos.

Constructores

ParamArrayAttribute()

Inicializa una nueva instancia de la clase ParamArrayAttribute con propiedades predeterminadas.

Propiedades

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

(Heredado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)

Se aplica a

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Consulte también