2009-10-19 36 views
4

我正在使用Visual Studio 2008 for C#。我不明白为什么这个简单的代码不能按预期工作。有任何想法吗?谢谢!为什么不读取()按预期工作?

using System; 

namespace TryRead 
{ 
    class Program 
    { 
     static void Main() 
     { 
      int aNumber; 
      Console.Write("Enter a single character: "); 
      aNumber = Console.Read(); **//Program waits for [Enter] key. Why?** 
      Console.WriteLine("The value of the character entered: " + aNumber); 
      Console.Read(); **//Program does not wait for a key press. Why?** 
     } 
    } 
} 

回答

4

//程序等待[Enter]键。为什么?

Read方法在键入输入字符时阻止其返回;当您按下Enter键时它会终止。按Enter键将依赖于平台的行终止序列添加到您的输入中(例如,Windows追加回车换行符序列)。

//程序不会等待密钥 按。为什么?

随后对Read方法的调用一次检索到您输入的一个字符[无阻塞]。读取最后一个字符后,Read再次阻止其返回,并重复该循环。

http://msdn.microsoft.com/en-us/library/system.console.read.aspx

+0

谢谢你的回答。出于某种原因,我用来学习C#(C#从问题分析编程到芭芭拉多伊尔的程序设计)没有提到这种行为。其他人建议KeyAvailable。我想我会看看那个。 – Jimmy 2009-10-19 18:01:57

+0

换句话说,Read()是为了循环在Enter键被按下之后输入的字符*,而不是在键被按下时。 – Greg 2009-10-19 18:05:14

+0

显然我是一个新手来掌握KeyAvailable,并且Help似乎表明ReadKey指的是注册表。我想我会用ReadLine代替。我很惊讶,这段代码似乎没有给出本书指出会发生的结果。任何有关新手的书籍建议? – Jimmy 2009-10-19 18:31:31

2

您需要使用Console.ReadKey()代替Console.Read()。

相关问题