如何检查变量是否为字符串或整数?控制台输入类型验证方法
搞定输入类型检查与转换的那些问题
咱们先把几个核心问题掰扯清楚,帮你解决困惑:
为啥直接赋值会报错?
你定义了int input,然后写input = Console.ReadLine();肯定会报错——因为Console.ReadLine()返回的是字符串类型(string),int和string是完全不同的类型,C#不允许这种隐式转换,这属于编译错误(还没到运行崩溃那一步呢😉)。
if (input.equals(string))这种写法可行吗?
完全不行!Equals()是用来比较值是否相等的,而string是个类型,不是具体的值。如果要检查变量的类型,得这么做:
- 如果变量是
object类型(比如object input = Console.ReadLine();),可以用input is string判断它是不是字符串; - 或者用
input.GetType() == typeof(string)来精确匹配类型(is会考虑继承关系,GetType()则是严格的类型匹配)。
不过回到你的场景,Console.ReadLine()返回的本来就是string,所以这个判断根本没必要——你拿到的输入100%是字符串,你真正需要的是判断这个字符串能不能转换成整数,这时候TryParse就是最靠谱的工具。
TryParse的正确打开方式
TryParse是.NET专门用来安全转换字符串到数值类型的方法,它不会抛出异常,而是返回一个bool值告诉你转换成功与否,同时通过out参数返回转换后的数值。
给你写个完整的获取整数输入的例子:
// 先读取用户输入的字符串 string userInput = Console.ReadLine(); int parsedNumber; // 尝试把字符串转成int if (int.TryParse(userInput, out parsedNumber)) { // 转换成功!parsedNumber就是用户输入的整数 Console.WriteLine($"你输入的整数是:{parsedNumber}"); } else { // 转换失败,说明用户输入的不是有效的整数(比如输入了字母、符号) Console.WriteLine("哥们儿,输入个有效的整数行不?"); }
如果要处理小数(比如double),用法几乎一样:
string userInput = Console.ReadLine(); double parsedDouble; if (double.TryParse(userInput, out parsedDouble)) { Console.WriteLine($"你输入的小数是:{parsedDouble}"); } else { Console.WriteLine("请输入有效的数字哦!"); }
你之前可能踩的TryParse坑
很多新手用TryParse会犯这些错误:
- 忘了加
out关键字:第二个参数必须是out类型,不然没法接收转换后的结果; - 参数类型不对:第一个参数必须是
string,不能传其他类型; - 忽略返回值:一定要看返回的
bool值,转换失败时out参数会返回类型的默认值(比如int的默认值是0),直接用的话会得到错误结果。
最后总结一下
- 控制台输入的内容本质上都是字符串,不需要检查是不是字符串;
- 要判断输入能不能转成整数/数值,用对应的
TryParse方法就对了; - 检查变量类型用
is关键字或GetType(),别用Equals()搞混了。
内容的提问来源于stack exchange,提问作者killakrab
相关产品推荐
相关产品推荐

