Params: pasando cantidad indefinida de parámetros en C#

La idea de este post es revisar un concepto general que C# nos ofrece como utilidad: el uso de params en la definición de funciones que tienen un array en sus parámetros. Primero vayamos con un ejemplo interesante que usamos muchas veces, y que tal vez nunca le hayamos prestado mucha atención en su uso: string.Format

Para el que no la conozca, esta función nos permite armar un string combinando texto fijo y dinámico de forma muy práctica, evitando la concatenación. En el primer parámetro pasaremos la estructura del string que queremos lograr, y luego como parámetros todos los valores dinámicos que se irán insertando en la ubicación deseada:

Params - InfoStringFormat
Firma del método string.Format, la cual define en uno de sus parámetros la palabra clave params.

Pero la característica de uso que nos importa en este post es que pasamos una cantidad indefinida de parámetros separados por coma, lo cual normalmente no es posible. Esto se debe al uso de params.

Params - UsoStringFormat
Ejemplo de uso de string.Format con una cantidad variable de parámetros.

El uso de params lo podremos aplicar solamente en los casos donde recibimos como parámetro un array de un determinado tipo. Supongamos el uso de nuestra función SumarCuadrados, que recibe un array de enteros y retorna la suma de los cuadrados de cada uno de sus elementos. En las invocaciones que hagamos del mismo siempre deberemos crear un array del tipo adecuado:

En cambio podemos hacer que nuestro método SumarCuadrados utilice la palabra clave params antes de la definición del tipo de datos del parámetro. Esto es lo que nos permitirá en su invocación pasar todos los valores asociados al array que queremos recibir en nuestro método separados por comas:

Como podemos ver en este ejemplo, un método que utilice params es compatible con aquellas invocaciones que se realizaban sobre el mismo de forma anterior al cambio. Esto puede ser algo muy interesante en aquellos casos donde queremos realizar una mejora sobre nuestra aplicación sin tener que realizar modificaciones adicionales.

Lo que debemos tener en cuenta son las restricciones que tiene el uso de params:

  • El parámetro que use params debe ser el último del método. Esto se debe a que al darnos la posibilidad de que haya una cantidad indefinida de elementos asociados a dicho parámetro no habría forma de poder diferenciar cuando es de uno u otro parámetro.
  • Solo podemos definir un parámetro de este tipo por método. Este punto tiene la misma justificación que el caso anterior.

 

A modo de conclusión el uso de params es una alternativa interesante para determinados casos, donde pasamos una cantidad reducida pero variable de elementos de un determinado tipo de datos en un array. Este uso nos permite lograr código más prolijo y mantenible sin necesidad de hacer algo adicional a la definición del parámetro.

Espero que les sea útil, gracias por leer!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s