Console terminates after Console.Read(), even with Console.ReadLine() at the end
以下代码要求您提供姓名。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Program { static void Main(string[] args) { Console.Write("Enter your name:"); string s = Console.ReadLine(); Console.WriteLine("Your name:" + s); Console.Write("Enter your surname:"); int r = Console.Read(); Console.WriteLine("Your surname:" + r); Console.ReadLine(); } } |
输入名称后,程序将成功显示您的输入。但是,输入姓氏后,程序将立即停止。据我了解,Console.Read()应该返回我输入的字符串的第一个字符的整数值(ASCII码?)。
为什么程序在Console.Read()之后立即终止? Console.ReadLine()是否应确保程序保持打开状态?我正在使用Visual Studio 2012.
当您告诉控制台输入您的姓氏时,您要输入一个字符。
1 2 | Console.Write("Enter your surname:"); int r = Console.Read(); |
这肯定是一个ReadLine,然后是另一个ReadLine,然后退出。您可能正在输入第一个字符(进入"读取"),然后输入后续字符,然后按Enter键以接受该姓氏,但实际上您位于将要退出的ReadLine上。因此:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Program { static void Main(string[] args) { Console.Write("Enter your name:"); string s = Console.ReadLine(); Console.WriteLine("Your name:" + s); Console.Write("Enter your surname:"); // change here string surname = Console.ReadLine(); Console.WriteLine("Your surname:" + surname); Console.ReadLine(); } } |
对于int r = Console.Read(),该程序不会终止。
基于控制台应用程序的运行方式,它将执行所有代码行,然后"返回"。完成此操作后,它将按照所有意图和目的关闭程序,并完成了所需的操作。完成后,它不会围坐并打开。
如果希望窗口保持打开状态,请在最后写入