ParamArrayAttribute Clase
TOC
Collapse the table of content
Expand the table of content
Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

ParamArrayAttribute (Clase)

 

Indica que un método va a permitir un número variable de argumentos cuando se invoque.Esta clase no puede heredarse.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Attribute
    System.ParamArrayAttribute

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

NombreDescripción
System_CAPS_pubmethodParamArrayAttribute()

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

NombreDescripción
System_CAPS_pubpropertyTypeId

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

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura de product y no está pensada para usarse directamente desde su código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute.)

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute.)

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual. (Heredado de Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Cuando se invalida en una clase derivada, indica si el valor de esta instancia es el valor predeterminado para la clase derivada.(Heredado de Attribute.)

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute.)

System_CAPS_pubmethodToString()

Retorna una cadena que representa al objeto actual. (Heredado de Object.)

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

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

(Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_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.)

ParamArrayAttribute indica que el parámetro de un método es una matriz de parámetros.Una matriz de parámetros permite la especificación de un número desconocido de argumentos.Esta matriz debe ser el último parámetro de una lista de parámetros formales y también debe ser una matriz unidimensional.Cuando se llama al método, una matriz de parámetros permite que los argumentos se especifiquen mediante cualquiera de los dos mecanismos siguientes:

  • Como una única expresión de un tipo que se puede convertir al tipo de la matriz de parámetros de forma implícita.Dicha matriz de parámetros funciona como un parámetro de valor.

  • Como cero o más argumentos, en los que cada uno de ellos es una expresión de un tipo que se puede convertir implícitamente al tipo de elemento de la matriz de parámetros.

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

System_CAPS_noteNota

Normalmente, ParamArrayAttribute no se utiliza directamente en el código.En su lugar, se utilizan palabras claves específicas del lenguaje, por ejemplo ParamArray en Visual Basic y params de C#, como contenedores de la clase ParamArrayAttribute.En algunos lenguajes, como en C#, puede ser necesario el uso de la palabra clave del lenguaje y estará prohibido el uso de ParamArrayAttribute.

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

Para obtener más información sobre cómo utilizar atributos, vea Extending Metadata Using Attributes.

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

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 método Temperature.Display.En la primera, se pasa una matriz de cadenas de formato al método.En la segunda, se pasan cuatro cadenas de formato distintas como argumentos al método.En la tercera, se llama al método sin argumentos.Cuando se muestra el resultado del ejemplo, los compiladores de C# y Visual Basic lo traducen como una llamada al método Display con una matriz de cadenas vacía.

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
Disponible desde 4.5
.NET Framework
Disponible desde 1.1
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Volver al principio
Mostrar:
© 2016 Microsoft