first Console.ReadLine()立即返回

本文关键字:返回 Console ReadLine first | 更新日期: 2023-09-27 18:18:48

我在写一个很傻的程序。

我不知道为什么下面的代码不能工作:

static void Main(string[] args){
        <Some silly code>
        Console.WriteLine("Please choose the lab you are working on:");
        int choose = Console.Read();
        <Some more silly code, including 1 Console.writeLine() call >
        Console.WriteLine("Enter the DB server location");
        string DBServer = Console.ReadLine();
        Console.WriteLine("Enter the DB name");
        string DBName = Console.ReadLine();
    }

当我运行程序时,它从不等待第一个ReadLine语句

string DBServer = Console.ReadLine();

立即打印这两行

Enter the DB server location  
Enter the DB name

然后读取第二个ReadLine string DBName = Console.ReadLine();

当我检查输入表单user时,它确实读取了第二个字符串,但第一个字符串显示为空。
什么好主意吗?

first Console.ReadLine()立即返回

这是因为您使用的是Console.Read,它将到达一个字符,但将在它之后单独留下回车符。然后由ReadLine拾取。

Input是一个流。当你输入一个字符然后回车时,流中有2-3个字符(取决于系统):你输入的字符和换行符。Read仅为您提供流中的下一个字符,而ReadLine将读取直到下一个换行符的所有内容。还是从小溪里。所以你的Read获取一个字符,ReadLine已经找到下一个换行符,因此继续愉快。

您可以插入一个假的ReadLine,或者使用ReadKey,它只读取一个键,在您的程序看到输入之前不需要返回,或者使用ReadLine作为单字符输入。