none
parar proceso de un metodo void. RRS feed

  • Pregunta

  • Ya sé que se puede frenar el proceso de un metodo con return, pero eso no funciona con un metodo "void" ¿cómo se hace en este caso?-
    lunes, 28 de septiembre de 2020 22:26

Respuestas

  • Hola PequeñoSaltamontes,

    Hay dos formas de salir de un método sin finalizar el programa. Una es lanzar una excepción, que solo debería hacerse si ocurrió algo incorrecto, y luego capturar esa excepción en un bloque try-catch más alto en la pila de llamadas. Lanzar una excepción finaliza inmediatamente la ejecución del método y luego se propaga hacia arriba a través de la pila de llamadas hasta que un bloque try-catch alrededor de la declaración de llamada lo detecta y lo maneja o llega al final de la pila de llamadas, en cuyo punto el programa termina imprimiendo el mensaje contenido por la excepción a la pantalla.

    public static void main() 
    { 
       try 
       { 
          foo(); 
       } 
       catch (Exception e) 
       { 
          // haz algo
       } 
    } 
     
    public static void foo() 
    { 
       throw new Exception(); 
    } 

    La forma más común de salir de un método en C# es usar una declaración de return, cosa que se puede hacer a pesar de que sea void. Si el método no devuelve un valor (su tipo de retorno es void), puedes usar la palabra clave return seguida de un punto y coma (;).

    public void foo() 
    { 
       bool endMethod = true; 
       //tu código
       if (endMethod) 
          return; 
       //tu código
    } 

    Por cierto, revisa estos 2 hilos tuyos: como hacer el signo "or" en c# y Cómo crear listas de forma automática y cómo guardar listas en arreglos. Les añadí respuestas que creo que te pueden ser valiosas. Espero que te sea de ayuda. Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice “Marcar como Respuesta”)Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    martes, 29 de septiembre de 2020 1:18
    Moderador
  • hola

    La verdad no creo entender lo que planteas, porque con un void el return aplica de la misma forma, solo que no asignas nada para devolver

    public void Metodo1(){
    
       if(true){
           return;
       }
    
    }

    ese return funciona y es un void

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 29 de septiembre de 2020 4:40

Todas las respuestas

  • Hola PequeñoSaltamontes,

    Hay dos formas de salir de un método sin finalizar el programa. Una es lanzar una excepción, que solo debería hacerse si ocurrió algo incorrecto, y luego capturar esa excepción en un bloque try-catch más alto en la pila de llamadas. Lanzar una excepción finaliza inmediatamente la ejecución del método y luego se propaga hacia arriba a través de la pila de llamadas hasta que un bloque try-catch alrededor de la declaración de llamada lo detecta y lo maneja o llega al final de la pila de llamadas, en cuyo punto el programa termina imprimiendo el mensaje contenido por la excepción a la pantalla.

    public static void main() 
    { 
       try 
       { 
          foo(); 
       } 
       catch (Exception e) 
       { 
          // haz algo
       } 
    } 
     
    public static void foo() 
    { 
       throw new Exception(); 
    } 

    La forma más común de salir de un método en C# es usar una declaración de return, cosa que se puede hacer a pesar de que sea void. Si el método no devuelve un valor (su tipo de retorno es void), puedes usar la palabra clave return seguida de un punto y coma (;).

    public void foo() 
    { 
       bool endMethod = true; 
       //tu código
       if (endMethod) 
          return; 
       //tu código
    } 

    Por cierto, revisa estos 2 hilos tuyos: como hacer el signo "or" en c# y Cómo crear listas de forma automática y cómo guardar listas en arreglos. Les añadí respuestas que creo que te pueden ser valiosas. Espero que te sea de ayuda. Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice “Marcar como Respuesta”)Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    martes, 29 de septiembre de 2020 1:18
    Moderador
  • hola

    La verdad no creo entender lo que planteas, porque con un void el return aplica de la misma forma, solo que no asignas nada para devolver

    public void Metodo1(){
    
       if(true){
           return;
       }
    
    }

    ese return funciona y es un void

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 29 de septiembre de 2020 4:40
  • ¡Muchas gracias! Me sirvió todo lo que me dijiste. Muy completas tus respuestas, no te hubieras tomado tantas molestias. Ya mismo me pongo a revisar tus otras respuestas en los otros temas.
    martes, 29 de septiembre de 2020 4:53
  • Gracias Leandro, es cierto return con punto y coma funciona, yo lo estaba haciendo sin punto y coma.
    martes, 29 de septiembre de 2020 4:55