none
Metodo con parametros opcionales en C# 3.5 y sin sobrecarga de metodos RRS feed

  • Pregunta

  • Hola Se que en vb .net existe el optional en la definición de parámetros Estoy Trabajando en VS 2010 con fm 3.5 

    Como podría hacer un método que no tenga algunos parámetros sin recorrir en  usar un parámetros 'params',

    public void DoSomething(params object[] theObjects)

    sobrecarga de metodos, ya que pueden variar el numero de parametros y el orden

    public void PrintValues(int? a = null, int? b = null, float? c = null, string s = "")
    {
        if(a.HasValue)
            Debug.Log(a);
        else
            Debug.Log("-");
    
        if(b.HasValue)
            Debug.Log(b);
        else
            Debug.Log("-");
    
        if(c.HasValue)
            Debug.Log(c);
        else
            Debug.Log("-");
    
        if(s != "") // Different check for strings
            Debug.Log(s);
        else
            Debug.Log("-");
    }
    Encontre el anterior codigo en StackOverflow pero es para c#4.0 y posterior

    jueves, 8 de febrero de 2018 17:10

Respuestas

  • Efectivamente, los parámetros opcionales se incorporaron a C# en la versión 4. Si todavía estás con la 3, tienes que aguantarte con los mecanismos anteriores, es decir, usar sobrecargas (preferiblemente) o usar el "params". De no valerte estas opciones, tendrás que actualizarte a una versión más moderna del compilador. Ojo, eso no significa que también tengas que actualizar el Framework, puedes usar un compilador moderno y en el "target" del proyecto apuntarlo a una versión antigua del Framework tal como la 3.5. Eso funciona aunque uses parámetros opcionales, dado que éstos son solo "cola sintáctica" para el compilador, y no afectan al MSIL generado, por lo que funciona aunque lo ejecutes en un Framework antiguo.
    jueves, 8 de febrero de 2018 18:11
    Moderador
  • hola alberto

    gracias por responder!!! pero encontré un link en codeproject.com que me sirvio para lo que necesito,

    ya que utilizando los parámetros con nombre, SI se pueden usar en el 3.5 y puedo utilizar los parámetros que necesito en cualquier orden, he aquí la solución ;)


    • Marcado como respuesta greg_dorian jueves, 8 de febrero de 2018 18:41
    jueves, 8 de febrero de 2018 18:41

Todas las respuestas

  • Efectivamente, los parámetros opcionales se incorporaron a C# en la versión 4. Si todavía estás con la 3, tienes que aguantarte con los mecanismos anteriores, es decir, usar sobrecargas (preferiblemente) o usar el "params". De no valerte estas opciones, tendrás que actualizarte a una versión más moderna del compilador. Ojo, eso no significa que también tengas que actualizar el Framework, puedes usar un compilador moderno y en el "target" del proyecto apuntarlo a una versión antigua del Framework tal como la 3.5. Eso funciona aunque uses parámetros opcionales, dado que éstos son solo "cola sintáctica" para el compilador, y no afectan al MSIL generado, por lo que funciona aunque lo ejecutes en un Framework antiguo.
    jueves, 8 de febrero de 2018 18:11
    Moderador
  • hola alberto

    gracias por responder!!! pero encontré un link en codeproject.com que me sirvio para lo que necesito,

    ya que utilizando los parámetros con nombre, SI se pueden usar en el 3.5 y puedo utilizar los parámetros que necesito en cualquier orden, he aquí la solución ;)


    • Marcado como respuesta greg_dorian jueves, 8 de febrero de 2018 18:41
    jueves, 8 de febrero de 2018 18:41