Si alguna de las respuestas a continuación responde a su pregunta, la forma en que funciona Stack Overflow, "aceptará" la respuesta haciendo clic en la marca de verificación junto a ella; detalles aquí .
TJ Crowder
Respuestas:
150
Sí, C # tiene un equivalente de parámetros varargs. Se llaman matrices de parámetros y se introducen con el paramsmodificador:
publicvoidFoo(int x, paramsstring[] values)
Entonces llámalo con:
Foo(10, "hello", "there");
Al igual que con Java, es solo el último parámetro el que puede variar de esta manera. Tenga en cuenta que (al igual que con Java) un parámetro de params object[] objectspuede causar confusión fácilmente, ya que debe recordar si un solo argumento de tipo object[]debe ajustarse nuevamente o no. Del mismo modo, para cualquier tipo que acepta valores NULL, debe recordar si un solo argumento de nullse tratará como una referencia de matriz o como un solo elemento de matriz. (Creo que el compilador solo crea la matriz si es necesario, pero tiendo a escribir código que me evita tener que recordarlo).
+1, aunque mencionaría que (como con casi cualquier otra función de idioma), no se debe abusar de esto.
Federico Berasategui
16
@HighCore: Si vas a mencionarlo sobre casi cualquier otra característica del idioma, probablemente no vale la pena mencionarlo :)
Jon Skeet
2
@hvd: Dado que el OP parece ser un principiante, prefiero no entrar en argumentos con nombre, parámetros opcionales, etc. aquí. Veo el punto que estás tratando de hacer, pero creo que agregaría más confusión que luz en este momento.
La palabra clave params le permite especificar un parámetro de método que toma un número variable de argumentos.
Puede enviar una lista de argumentos separados por comas del tipo especificado en la declaración del parámetro, o una matriz de argumentos del tipo especificado. Tampoco puede enviar argumentos.
No se permiten parámetros adicionales después de la palabra clave params en una declaración de método, y solo se permite una palabra clave params en una declaración de método.
Como se muestra en el ejemplo, el método se declara como
publicstaticvoidUseParams(paramsint[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
Respuestas:
Sí, C # tiene un equivalente de parámetros varargs. Se llaman matrices de parámetros y se introducen con el
paramsmodificador:public void Foo(int x, params string[] values)Entonces llámalo con:
Foo(10, "hello", "there");Al igual que con Java, es solo el último parámetro el que puede variar de esta manera. Tenga en cuenta que (al igual que con Java) un parámetro de
params object[] objectspuede causar confusión fácilmente, ya que debe recordar si un solo argumento de tipoobject[]debe ajustarse nuevamente o no. Del mismo modo, para cualquier tipo que acepta valores NULL, debe recordar si un solo argumento denullse tratará como una referencia de matriz o como un solo elemento de matriz. (Creo que el compilador solo crea la matriz si es necesario, pero tiendo a escribir código que me evita tener que recordarlo).fuente
Eche un vistazo a params (referencia de C #)
Como se muestra en el ejemplo, el método se declara como
public static void UseParams(params int[] list) { for (int i = 0; i < list.Length; i++) { Console.Write(list[i] + " "); } Console.WriteLine(); }y usado como
UseParams(1, 2, 3, 4);fuente