Parámetros en C# - Parámetros Múltiples

No siempre sabemos con certeza el núme­ro 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 adecua­damente 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 invocacio­nes no lo son.

Leave a Reply