Why does Read interfere with ReadLine? [duplicate]

The first method you are calling is Read which returns one character. But it blocks until you hit the Enter key.

From MSDN:

The Read method blocks its return while you type input characters; it terminates when you press the Enter key.

Then you call ReadLine which returns a line.

When you hit the Enter key the Read method will return the first character and remove it from the input stream. The following call to ReadLine will then immediately return the rest of the line.

Please note that if you enter a number Read will not return the number but the ASCII representation of the digit (49 for ‘1’ etc.). If you are interested in getting an integer you should use ReadLine and use int.TryParse on the return value.

If you are interested in a single key you should prefer ReadKey as it only blocks for a single key.

Leave a Comment