dny*_*war 3 .net c# console.readline
我有以下代码
char c1 = (char)Console.Read();
Console.WriteLine("Enter a string.");
string instr = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
它需要一个值c1,然后打印"输入一个字符串".然而,当我尝试输入一个字符串时,它看起来像是一样ReadKey(),这意味着只要按下任何键,它就显示出instr一个空值.
如果我删除第一行(char c1 = (char)Console.Read();),程序可以正常工作.
为什么是这样?
当你调用时Read(),它仍会阻塞,直到你按Enter键为止,即使实际方法只消耗输入流中的一个字符.当您随后按Enter键时,该字符确实被读取,但换行符不是.由于换行仍然在输入流中,因此调用ReadLine()立即返回,因为它读取了行终止符.如果要进行调试,可以更深入地看到此行为.
要解决这个问题,我可以建议以下内容,使用ReadKey():
char c1 = Console.ReadKey().KeyChar;
Console.WriteLine(Environment.NewLine /* Added simply for readability */
+ "Enter a string.");
string instr = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
如果您希望用户在之后仍然按Enter键Read(),只需使用ReadLine并为第一个字符取一个子字符串.
| 归档时间: |
|
| 查看次数: |
1935 次 |
| 最近记录: |