¿Por qué utilizar la palabra clave params?
Sé que esta es una pregunta básica, pero no pude encontrar una respuesta.
¿Por qué usarlo? Si escribe una función o un método que lo utiliza, cuando lo elimine, el código seguirá funcionando perfectamente, 100% como sin él. P.ej:
Con parámetros:
static public int addTwoEach(params int[] args)
{
int sum = 0;
foreach (var item in args)
sum += item + 2;
return sum;
}
Sin parámetros:
static public int addTwoEach(int[] args)
{
int sum = 0;
foreach (var item in args)
sum += item + 2;
return sum;
}
Conparams
puedes llamar a tu método de esta manera:
addTwoEach(1, 2, 3, 4, 5);
Sin params
, no puedes.
Además, puedes llamar al método con una matriz como parámetro en ambos casos :
addTwoEach(new int[] { 1, 2, 3, 4, 5 });
Es decir, params
le permite utilizar un atajo al llamar al método.
Sin relación, puedes acortar drásticamente tu método:
public static int addTwoEach(params int[] args)
{
return args.Sum() + 2 * args.Length;
}
El uso params
le permite llamar a la función sin argumentos. Sin params
:
static public int addTwoEach(int[] args)
{
int sum = 0;
foreach (var item in args)
{
sum += item + 2;
}
return sum;
}
addtwoEach(); // throws an error
Comparar con params
:
static public int addTwoEach(params int[] args)
{
int sum = 0;
foreach (var item in args)
{
sum += item + 2;
}
return sum;
}
addtwoEach(); // returns 0
Generalmente, puede usar parámetros cuando el número de argumentos puede variar de 0 a infinito y usar una matriz cuando el número de argumentos varía de 1 a infinito.
Le permite agregar tantos parámetros de tipo base en su llamada como desee.
addTwoEach(10, 2, 4, 6)
mientras que con la segunda forma tienes que usar una matriz como parámetro
addTwoEach(new int[] {10,2,4,6})