¿Por qué la ventana de la consola se cierra inmediatamente una vez que se muestra mi resultado?
Estoy estudiando C# siguiendo las guías de MSDN .
Ahora, acabo de probar el Ejemplo 1 ( aquí está el enlace a MSDN ) y encontré un problema: ¿por qué la ventana de la consola se cierra inmediatamente una vez que se muestra mi salida?
using System;
public class Hello1
{
public static int Main()
{
Console.WriteLine("Hello, World!");
return 0;
}
}
El problema aquí es que su programa Hola Mundo aparece y se cerrará inmediatamente.
¿porqué es eso?
Porque se acabó. Cuando las aplicaciones de consola han completado su ejecución y regresan de su main
método, la ventana de consola asociada se cierra automáticamente. Este es el comportamiento esperado.
Si desea mantenerla abierta para fines de depuración, deberá indicarle a la computadora que espere a que se presione una tecla antes de finalizar la aplicación y cerrar la ventana.
El Console.ReadLine
método es una forma de hacerlo. Agregar esta línea al final de su código (justo antes de la return
declaración) hará que la aplicación espere a que presione una tecla antes de salir.
Alternativamente, puede iniciar la aplicación sin el depurador adjunto presionando Ctrl+ F5desde el entorno de Visual Studio, pero esto tiene la desventaja obvia de impedirle utilizar las funciones de depuración, que probablemente desee tener a su disposición al escribir una aplicación.
Probablemente, el mejor compromiso sea llamar al Console.ReadLine
método sólo al depurar la aplicación envolviéndola en una directiva de preprocesador. Algo como:
#if DEBUG
Console.WriteLine("Press enter to close...");
Console.ReadLine();
#endif
También es posible que desee que la ventana permanezca abierta si se produce una excepción no detectada. Para hacer eso puedes poner el Console.ReadLine();
en un finally
bloque:
#if DEBUG
try
{
//...
}
finally
{
Console.WriteLine("Press enter to close...");
Console.ReadLine();
}
#endif
En lugar de usar
Console.Readline()
Console.Read()
Console.ReadKey()
puede ejecutar su programa usando Ctrl+ F5(si está en Visual Studio). Luego, Visual Studio mantendrá abierta la ventana de la consola hasta que presione una tecla.
Nota: No puede depurar su código con este enfoque.
Supongo que la razón por la que no desea que se cierre en el modo de depuración es porque desea ver los valores de las variables, etc. Por lo tanto, probablemente sea mejor simplemente insertar un punto de interrupción en el cierre "}" de la función principal. . Si no necesita depurar, Ctrl-F5 es la mejor opción.
Esto se comporta igual para CtrlF5o F5. Colóquelo inmediatamente antes del final del Main
método.
using System.Diagnostics;
private static void Main(string[] args) {
DoWork();
if (Debugger.IsAttached) {
Console.WriteLine("Press any key to continue . . .");
Console.ReadKey();
}
}