C#控制台应用:如何内联请求输入及检测任意按键
刚好在C#控制台开发里经常碰到这两个需求,我来给你详细讲讲:
内联请求用户输入
要实现提示文本和输入框在同一行的效果,核心是用Console.Write()代替Console.WriteLine()——前者输出后不会自动换行,光标会停在提示文本的末尾,用户输入就会直接跟在提示后面。
示例代码:
// 输出提示但不换行 Console.Write("What is your name: "); // 读取用户输入,此时光标就在提示文本后 string userName = Console.ReadLine(); // 后续处理输入 Console.WriteLine($"Nice to meet you, {userName}!");
运行这段代码时,控制台会显示What is your name: ,光标紧跟在冒号后面,用户输入的内容就会内联显示在同一行,完美符合你的需求。
暂停程序直至用户按下任意键
Console.ReadLine()确实只响应回车键,要实现“按任意键继续”的效果,得用Console.ReadKey()方法:
基础用法(显示按下的按键)
Console.WriteLine("Press any key to exit..."); // 等待用户按下任意键,按下的键会显示在控制台 Console.ReadKey();
隐藏按下的按键
如果不想让用户按下的键显示在控制台,可以用重载方法,传入true参数表示不捕获显示字符:
Console.WriteLine("Press any key to continue..."); // 等待按键但不显示输入的字符 Console.ReadKey(true);
另外,Console.ReadKey()会返回一个ConsoleKeyInfo对象,如果你需要判断用户按下的具体按键(比如只允许按ESC退出),还可以对返回值做判断:
Console.WriteLine("Press ESC to exit..."); ConsoleKeyInfo keyInfo = Console.ReadKey(true); if (keyInfo.Key == ConsoleKey.Escape) { Environment.Exit(0); }
内容的提问来源于stack exchange,提问作者Shane Powell
相关产品推荐
相关产品推荐

