¿Admite C # una cantidad variable de argumentos y cómo?

¿C # admite una cantidad variable de argumentos?

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

¿Cuáles son los ejemplos?

¿Cómo son útiles los argumentos variables?

EDIT 1 : ¿Cuáles son las restricciones sobre esto?

EDIT 2 : La pregunta no trata de param opcional, pero param variable

Sí. El ejemplo clásico sería 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 pasar parámetros en un entorno de línea de comando a un progtwig, donde los pasa como cadenas. El progtwig debe validar y asignarlos correctamente.

Restricciones

  • Solo se permite una palabra clave params por método
  • Tiene que ser el último parámetro.

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


También uno de los más clásicos, se llama sobrecarga de métodos . Probablemente ya los hayas usado 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); } 

Por último, pero no menos importante, el más exitante: 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

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 aquí .

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.

Supongo que te refieres a una cantidad variable de parámetros de método . 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ño) como lo es también para los arreglos
  • Solo puede haber uno para cada método
  • Deben ser los últimos en la lista de parámetros

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