Cómo Salir de un Método sin Salir del Programa?

Todavía soy bastante nuevo en C# y estoy teniendo un tiempo difícil acostumbrarse a ella en comparación a C/CPP.

¿Cómo se puede salir de una función en C# sin salir del programa, como esta función?

if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
    textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
System.Environment.Exit(0);

Esto no va a permitir que los tipos de retorno y si se los deja solos se va a seguir a través de la función ilimitado. Lo cual es indeseable.

  • Por CIERTO, se llaman «métodos», no «funciona» en estos días.
  • Eh??? C/C++ tiene return; para void funciones…
  • He estado programando en C# y otros lenguajes de programación orientada a objetos para un buen tiempo y todavía llamo funciones. (y sólo tengo 19!)
  • tal vez sea sólo yo, pero me parece que la mayoría de las personas que todavía dicen «función», o «subrutina» no sé OO. Por lo tanto, escuchar a alguien decir «función» me da la impresión de que no saben OO.
  • Cada método es una función, y es también una subrutina (pero no cada función o subrutina es un método). En cualquier caso, en mi idioma favorito se llama «funciones miembro», y esa es la forma en que me gusta de ellos! 😉
  • un método, para mí, implica operativo en una instancia. Una función que opera sobre sus argumentos, independientemente de si es o no es estática. Un método es un sub-caso de funciones que operan sobre una instancia, donde la instancia es el primer argumento (implícita o explícita, dependiendo de su idioma).
  • Yo prefiero el «método de instancia» y «método estático» o «método de la clase». Las funciones son un no-OO concepto, y no se refieren al concepto de una clase.
  • Para la mayoría de la diferencia entre el «método» y «función» es como la diferencia entre la «armadura» y «armadura» o «color» y «color». Depende de cómo se mire.

InformationsquelleAutor Nightforce2 | 2010-07-22

6 Kommentare

  1. 134

    Hay dos maneras de salir de un método temprana (sin salir del programa):

    • Utilizar el regresar palabra clave.
    • Lanzar una excepción.

    Excepciones sólo debe ser utilizado por circunstancias excepcionales – cuando el método no puede continuar y no puede regresar un valor razonable que tendría sentido para la persona que llama. Aunque usualmente, usted simplemente debe devolver cuando haya terminado.

    Si el método devuelve void, a continuación, puede escribir regresar sin valor:

    return;

    Específicamente sobre el código:

    • No hay necesidad de escribir la misma prueba en tres ocasiones. Todas esas condiciones son equivalentes.
    • También debe utilizar llaves cuando se escribe una instrucción if, de modo que es claro que las declaraciones están en el interior del cuerpo de la instrucción if:

      if (textBox1.Text == String.Empty)
      {
          textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
      }
      return; //Are you sure you want the return to be here??
    • Si usted está utilizando .NET 4 no es un método útil que, dependiendo de sus necesidades usted puede ser que desee considerar el uso aquí: De la cadena.IsNullOrWhitespace.

    • Que podría desea utilizar medio Ambiente.Salto de línea en lugar de "\r\n".
    • Usted puede ser que desee considerar otra forma de visualización de entrada no válida otros que escribir mensajes a un cuadro de texto.
    • Era tan sencillo! Acaba de regresar sin valor! Muchas gracias! Tenía que regresar con 0. =)
    • Yo estaba inputing mensajes a la casilla de estado visual de heads up. Buenos consejos, aunque! Estoy aprende mucho de como vaya.
    • O string.IsNullOrEmpty (pre .Net 4 shout-out, que por supuesto no detecta los espacios en blanco-solo cadenas). Lamentablemente, no todos nosotros podemos utilizar 4.0, sin embargo.
    • «volver» no funciona si estás en un anidada pieza de código, como en un «catch».
  2. 8

    Además de Marcar la respuesta también debe ser consciente de alcance, el cual (como en C/C++) se especifica el uso de llaves. Así:

    if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
        textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
    return;

    siempre se puede volver a ese punto. Sin embargo:

    if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
    {
        textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
        return;
    }

    sólo se devolverá si se entra en esa if declaración.

  3. 0

    Si la función es un vacío, terminando la función return. De lo contrario, deberá hacer explícito return someValue. Como Marca mencionado, también puede throw una excepción. ¿Cuál es el contexto de tu pregunta? ¿Tienes un código más grande de la muestra con la que se muestran algunas de las formas para salir de la función?

    • Lanzar una excepción en este caso no es la mejor práctica
  4. 0

    @Juan, Earlz y Nathan. La he aprendido en la uni es: funciones devuelven valores, métodos, no. En algunos idiomas, la sintaxis es/era realmente diferente. Ejemplo (no específicos de la lengua):

    Method SetY(int y) ...
    Function CalculateY(int x) As Integer ...

    La mayoría de los idiomas ahora usan la misma sintaxis que para ambas versiones, el uso de vacío como un tipo de retorno a decir que en realidad no es un tipo de retorno. Supongo que es porque la sintaxis es más consistente y más fácil cambiar de método para la función, y viceversa.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea