C#实现控制台交互式操作

发布时间:2026/6/29 21:13:41
C#实现控制台交互式操作 如果说多区域布局解决的是界面如何展示的问题那么本文要讨论的则是另外一个问题用户如何与界面交互相信体验过Claude Code、OpenCode、Hermes 等工具的同学经常能够看到类似界面请选择模型 GPT-4.1 Claude Sonnet Gemini Pro或者即将修改以下文件 Program.cs appsettings.json 是否继续 [ 是 ] [ 否 ]这些效果看起来已经完全不像传统的命令行程序。相比与请输入数字编号这种交互方式显然更加直观交互性更强。本文就通过两个简单示例分析这些终端交互效果背后的实现原理列表菜单确认选择框看看这些在 Agent CLI 中随处可见的交互组件如果使用原生的控制台方式究竟是如何实现的。传统CLI与现代CLI#很多传统的控制台程序都是这样工作的请选择操作 1.启动服务 2.停止服务 3.重启服务 请输入编号用户输入2程序继续执行。这种交互的模式本质上是输入 ↓ 提交 ↓ 执行而现代 CLI 更倾向于实时交互 ↓ 实时反馈 ↓ 状态更新例如请选择操作 启动服务 停止服务 重启服务用户按下方向键时变成启动服务 停止服务 重启服务整个过程不需要输入任何字符, 这也是各种 Agent CLI 非常喜欢采用的交互方式。实现一个列表菜单#先来看一个最常见的场景。例如系统运维工具请选择执行操作 启动系统服务 停止系统服务 重启数据库 清理系统缓存 查看运行日志 退出程序用户通过↑ ↓随意切换选项, 通过Enter确认选择, 最终返回用户选中的菜单项。菜单数据定义#首先准备菜单数据string[] options { 启动系统服务, 停止系统服务, 重启数据库, 清理系统缓存, 查看运行日志, 退出程序 };然后调用菜单组件int selectedIndex ShowSelectionMenu(options);该方法最终会返回0 1 2 3对应用户选择的菜单项。菜单核心实现#