why getting null value from console in c# for readLine() after using read()

那年仲夏 提交于 2019-11-29 15:00:23

When you call Read(), it still blocks until you hit enter even though the actual method will only consume a single character from the input stream. When you subsequently hit enter, the character is indeed read, but the newline isn't. Since the newline is still in the input stream, the call to ReadLine() immediately returns, as it's read a line terminator. You can see this behaviour in more depth if you were to debug.

To resolve this I could suggest the following, using ReadKey():

char c1 = Console.ReadKey().KeyChar;
Console.WriteLine(Environment.NewLine /* Added simply for readability */
    + "Enter a string.");
string instr = Console.ReadLine();

If you would like the user to still hit enter after the Read(), just use ReadLine and take a substring for the first character.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!