Console在Console.Read()之后终止,即使最后是Console.ReadLine()

时间:2015-10-12 12:21:07

标签: c# visual-studio-2012 console-application console.readline

以下代码会询问您的姓名。

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()应该返回我输入的字符串的第一个字符的int值(ASCII码?)。

为什么程序在Console.Read()之后立即终止?不应该Console.ReadLine()确保程序保持打开状态?我正在使用Visual Studio 2012。

2 个答案:

答案 0 :(得分:2)

当您告诉控制台输入您的姓氏时,您要求输入一个字符。

Console.Write("Enter your surname: ");
int r = Console.Read();

这肯定应该是一个ReadLine,然后退出之前是另一个ReadLine。您可能正在输入第一个字符(进入Read),然后输入后续字符,然后按Enter键接受姓氏,但实际上您将退出将退出的ReadLine。所以:

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()之后,程序不会终止。

答案 1 :(得分:1)

根据控制台应用程序的运行方式,它将执行所有代码行,然后返回'。一旦完成,这将关闭程序,就像它已经完成它所需要的所有意图和目的一样。它不会坐下来并在完成后打开。

如果你希望它保持窗口打开,最后写Console.Readline()并保持打开状态,直到某些输入完成。我记得刚开始时遇到这个问题,并不是程序意外关闭的问题,而是你希望在关闭之前在控制台中看到结果。