为什么Read会干扰ReadLine

本文关键字:ReadLine 干扰 Read 为什么 | 更新日期: 2023-09-27 18:24:58

我用C#编写了一个非常基本的程序。但是,我不理解执行的程序的行为。为什么Read()会干扰ReadLine()

int str = Console.Read();
string str1 = Console.ReadLine();
Console.WriteLine(str);
Console.WriteLine(str1);

为什么Read会干扰ReadLine

您要调用的第一个方法是Read,它返回一个字符。但它会阻塞,直到您按下Enter键

来自MSDN:

当您键入输入字符时,Read方法会阻止其返回;当您按下Enter键时,它将终止。

然后调用ReadLine,返回一行。

当您按下Enter键时,Read方法将返回第一个字符并将其从输入流中删除。接下来对ReadLine的调用将立即返回线路的其余部分。

请注意,如果您输入数字,Read将不会返回数字,而是返回数字的ASCII表示形式(49表示"1"等)。如果您有兴趣获取整数,则应使用ReadLine并在返回值上使用int.TryParse

如果你对单个密钥感兴趣,你应该更喜欢ReadKey,因为它只为单个密钥阻塞。