C#如何实现动态接收用户输入 解决Console.ReadLine仅返回字符串问题
核心原理
首先要明确:控制台的所有用户输入本质都是纯字符序列,Console.ReadLine() 固定返回字符串类型是符合设计逻辑的,不存在原生能直接返回「输入对应类型」的方法,你需要的「动态识别输入类型」本质是对输入字符串做自动类型推断解析。
实现方案
可以按照常见数据类型的优先级依次尝试解析,解析成功就用对应类型的结果,全部解析失败则保留字符串类型,示例代码如下:
for (int i = 0; i < 5; i++) { Console.Write("请输入内容:"); string input = Console.ReadLine(); object result = ParseInputAuto(input); Console.WriteLine($"输入内容:{result},实际类型:{result.GetType().FullName}"); } // 自动类型解析方法 static object ParseInputAuto(string input) { // 优先级1:判断是否为空/空白字符串 if (string.IsNullOrWhiteSpace(input)) { return input; } // 优先级2:尝试解析整数 if (int.TryParse(input, out int intVal)) { return intVal; } // 优先级3:尝试解析浮点数 if (double.TryParse(input, out double doubleVal)) { return doubleVal; } // 优先级4:尝试解析布尔值 if (bool.TryParse(input, out bool boolVal)) { return boolVal; } // 优先级5:尝试解析日期时间 if (DateTime.TryParse(input, out DateTime dateVal)) { return dateVal; } // 所有类型解析失败,返回原字符串 return input; }
你可以根据自身需求调整解析的优先级,或者增加更多要支持的类型(比如Guid、decimal等),即可实现动态识别输入类型的需求。
内容的提问来源于stack exchange,提问作者Amr Adel
相关产品推荐
相关产品推荐

