64 - Número variable de parámetros |
Hasta ahora hemos planteado métodos que reciben una cantidad fija de parámetros, pero C# permite implementar métodos con una cantidad variable de parámetros (es decir que llamemos al método pasando en algunas circunstancias pasándole dos parámetros y en otras pasándole 5)
Para resolver esto C# incorpora la palabra clave params y seguidamente un vector.
Implementar un método que le envíe una cantidad n de enteros y me retorne la suma de los mismos.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ParametrosVariables1
{
class Program
{
public int Sumar(params int[] p)
{
int su = 0;
for (var f = 0; f < p.Length; f++)
{
su = su + p[f];
}
return su;
}
static void Main(string[] args)
{
Program p = new Program();
Console.Write("La suma de 3,4,5 es ");
Console.WriteLine(p.Sumar(3,4,5));
Console.ReadKey();
}
}
}
Como podemos ver le antecedemos al nombre del vector la palabra clave params:
public int Sumar(params int[] p)
{
int su = 0;
for (var f = 0; f < p.Length; f++)
{
su = su + p[f];
}
return su;
}
La diferencia fundamental es que desde donde llamamos al método no le pasamos un vector de enteros, sino una lista de parámetros enteros:
Console.WriteLine(p.Sumar(3,4,5));
Un método solo puede tener un solo parámetro de este tipo y debe ser siempre el último, por ejemplo:
public int Sueldos(string nombre,params float[] su)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ParametrosVariables2
{
class Program
{
public int Operar(string operacion, params int[] v)
{
if (operacion == "suma")
{
int suma = 0;
for (var f = 0; f < v.Length; f++)
{
suma = suma + v[f];
}
return suma;
}
if (operacion == "producto")
{
int producto = 1;
for (var f = 0; f < v.Length; f++)
{
producto=producto * v[f];
}
return producto;
}
return int.MaxValue;
}
static void Main(string[] args)
{
Program p = new Program();
Console.Write("El producto de 2*3*4 es ");
Console.WriteLine(p.Operar("producto", 2, 3, 4));
Console.Write("La suma de 5+10 es ");
Console.WriteLine(p.Operar("suma", 5, 10));
Console.ReadKey();
}
}
}