C# – Waiting for user input in a Console App

The following code shows how to wait for user input in a Console App:

while (true)
{
	Console.Write("Type something: ");
	var input = Console.ReadLine();

	//Process input
	Console.WriteLine(input);
}
Code language: C# (cs)

When the user types something in and presses the Enter key, Console.ReadLine() will return what they typed.

Type something: hello
hello
Type something:Code language: plaintext (plaintext)

Console.ReadLine() vs Console.ReadKey()

Console.ReadLine() waits for the user to press Enter, and then returns everything they typed in.

Console.ReadKey() returns individual key presses. It returns a ConsoleKeyInfo object, which allows you to examine which key they pressed (including if it was a key press combo like Ctrl-A).

Here’s an example of using Console.ReadKey(). Let’s say when the user presses a key, you want to uppercase it, and show them the uppercased version. Here’s how you’d do that:

while (true)
{
	Console.Write("Type something: ");

	ConsoleKeyInfo keyPress = Console.ReadKey(intercept: true);
	while (keyPress.Key != ConsoleKey.Enter)
	{
		Console.Write(keyPress.KeyChar.ToString().ToUpper());

		keyPress = Console.ReadKey(intercept: true);
	}
	Console.WriteLine();

}
Code language: C# (cs)

When I run this and type “hello”, it intercepts each letter I typed in and outputs the uppercased version. This is what the output looks like:

Type something: HELLO
Type something:Code language: plaintext (plaintext)

2 thoughts on “C# – Waiting for user input in a Console App”

  1. Once again Google sends me back to Makolyte for the simple “I forgot how to do this really simple thing”. You run a pretty good site for us .net developers. Appreciate your content sir.

    Well done.

    Reply

Leave a Comment