He trabajado en Java y soy nuevo en la tecnología .Net.
¿Es posible declarar una función en C # que acepta parámetros de entrada variables?
¿Existe alguna sintaxis de C # similar a la siguiente sintaxis de Java?
void f1(String... a)
He trabajado en Java y soy nuevo en la tecnología .Net.
¿Es posible declarar una función en C # que acepta parámetros de entrada variables?
¿Existe alguna sintaxis de C # similar a la siguiente sintaxis de Java?
void f1(String... a)
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 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).
Eche un vistazo a params (referencia de C #)
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
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);