Parámetros en C# - Parámetros Múltiples
No siempre sabemos con certeza el número de parámetros que vamos a enviar a un método. En ese caso podemos emplear la palabra clave params para denotar que el número de parámetros será en realidad un array de parámetros de tamaño inicialmente desconocido, teniendo:
using System;
class Parametros {
static void Main () {
int[] parametros = {l, 2, 3, 4, 5};
CuentaArgumentos (parametros);
CuentaArgumentos (1, 2, 3);
CuentaArgumentos ();
}
static void CuentaArgumentos (params int[] parametros) {
Console.Write (”He recibido {O} argumentos:”, parametros.Length);
for (int i = O; i < parametros.Length; i++)
Console.Write (” {0}”, parametros[i]);
Console.WriteLine ();
}
}
En el programa hemos definido un método llamado CuentaArgumentos al que le hemos añadido params en su definición. Esto nos permite invocarlo de tres maneras distintas en el método principal. Da igual si lo llamamos con un array como argumento, una lista de números o sencillamente nada. El método será capaz de controlar adecuadamente cada situación:He recibido 5 argumentos: 1 2 3 4 5 He recibido 3 argumentos: 1 2 3
He recibido O argumentos:
Cabe preguntarse qué pasaría si elimináramos params de la definición, puesto que formalmente seguiría siendo correcta. El resultado es el esperado, tal como se muestra a continuación:
Params.cs (8) error CS1501: No overload for method ‘CuentaArgumentos’ takes ‘3′ arguments
Params.cs(8) error CS8006: Could not find any applicable functíon for this argument list
Params.cs(9) error CS1501: No overload for method ‘CuentaArgumentos’ takes ‘O’ arguments
Params.cs(9) error CS8006: Could not find any applicable function for this argument list
Compilation failed: 4 error(s), 0 warnings
Esto significa que puede que la definición del método sea válida, pero sus invocaciones no lo son.



