为什么Read会干扰ReadLine?

时间:2014-09-27 17:15:12

标签: c# string int console.readline

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

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

Console.WriteLine(str);
Console.WriteLine(str1);

1 个答案:

答案 0 :(得分:1)

您要拨打的第一种方法是Read,它会返回一个字符。但是阻止,直到你点击Enter键

来自MSDN:

  

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

然后你打电话给ReadLine,它会返回一行。

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

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

如果您对单个密钥感兴趣,则应该更喜欢ReadKey,因为它只会阻止单个密钥。