2012-03-02 18 views
38

¿C# admite un número variable de argumentos?¿Admite C# una cantidad variable de argumentos y cómo?

En caso afirmativo, ¿cómo C# admite variable variable de argumentos?

¿Cuáles son los ejemplos?

¿Cómo son útiles los argumentos variables?

EDITAR 1: ¿Cuáles son las restricciones al respecto?

EDIT 2: La cuestión no se trata de parámetro opcional pero variable Param

Respuesta

60

Sí. El ejemplo clásico wourld sea el params object[] args:

//Allows to pass in any number and types of parameters 
public static void Program(params object[] args) 

Un caso de uso típico sería el paso de parámetros en un entorno de línea de comandos para un programa, donde se pasa en forma de cadenas. El programa debe validar y asignarlos correctamente.

Restricciones: Se permite

  • Sólo una palabra clave por params método
  • Tiene que ser el último parámetro.

EDIT: Después de leer sus ediciones, hice la mía. La parte a continuación también cubre métodos para lograr números variables de argumentos, pero creo que realmente estabas buscando la forma params.


también uno de los más clásicos, se llama sobrecarga de métodos. Es probable que ya se ha utilizado mucho:

//both methods have the same name and depending on wether you pass in a parameter 
//or not, the first or the second is used. 
public static void SayHello() { 
    Console.WriteLine("Hello"); 
} 
public static void SayHello(string message) { 
    Console.WriteLine(message); 
} 

último pero no menos los más emocionantes uno: argumentos opcionales

//this time we specify a default value for the parameter message 
//you now can call both, the method with parameter and the method without. 
public static void SayHello(string message = "Hello") { 
    Console.WriteLine(message); 
} 

http://msdn.microsoft.com/en-us/library/dd264739.aspx

+0

cómo pasar parámetros a través de RPC desde Java con formato de datos JSON? –

10

Sí, params:

public void SomeMethod(params object[] args) 

params tiene que ser el último argumento y puede ser de cualquier tipo. No estoy seguro si tiene que ser una matriz o solo un IEnumerable.

12

C# admite matrices de parámetros de longitud variable utilizando la palabra clave params.

Aquí hay un ejemplo.

public static void UseParams(params int[] list) 
{ 
    for (int i = 0; i < list.Length; i++) 
    { 
     Console.Write(list[i] + " "); 
    } 
    Console.WriteLine(); 
} 

Hay más información here.

6

Supongo que quiere decir un variable number of method parameters. Si es así:

void DoSomething(params double[] parms) 

(o mezclado con parámetros fijos)

void DoSomething(string param1, int param2, params double[] otherParams) 

Restricciones:

  • Todos deben ser del mismo tipo (o de un tipo de niños) como ocurre con arrays también
  • Solo puede haber uno para cada método
  • Deben ser los últimos en el parámetro li st

Eso es todo lo que puedo pensar por el momento aunque podría haber otros. Consulte la documentación para obtener más información.

Cuestiones relacionadas