Parámetros opcionales en C#

Un manejo bastante fácil de parámetros opcionales en C# es usando la palabra reservada params, así:

 

    public string concatena(params string[] cadenas)
{
string sResult = "";
foreach (string str in cadenas)
{
sResult = sResult + str + " ";
}
return sResult;
}

Y se usaría tan sencillo como esto:


 

Label1.Text = concatena("uno");
Label1.Text = concatena("primero", "segundo", "tercero");

Sin embargo, se debe tomar en cuenta que esto limita el Intellisense en el proyecto, ya que no se tiene idea de los parámetros que se están pasando a la función. La recomendación políticamente correcta (en términos de POO al menos), es usar funciones con parámetros sobrecargados según se necesiten. Por ejemplo:


 

    static string concatena(string str)
{
return str;
}

static string concatena(string str1, string str2)
{
return str1 + " " + str2;
}

static string concatena(string str1, string str2, string str3)
{
return str1 + " " + str2 + " " + str3;
}


 Aunque, claro está, en ejemplos tan sencillos como este nos veremos tentados a usar params, es bueno tomar en cuenta alternativas propias del lenguaje. Cuando escalemos implementaciones, nos agradeceremos a nosotros mismos seguir las reglas del juego apropiadamente.


Más info:


Using Params Keyword


Optional Parameters


How to read optional parameters


 


4 thoughts on “Parámetros opcionales en C#”

  1. Había visto un video donde se usaban parámetros opcionales, de “verdad”. Donde además podías hacer referencia a cualquiera de ellos de forma nominal.

    El uso de params no me parece una solución adecuada.

  2. Interesante, pero como seria una funcion con varios parametros y solo el ultimo como opcional …? yo no pude implementarlo, asi que mi pregunta ojala sea respondida adecuadamente.

    Saludos

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>