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(); } } }