You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于C#中int.TryParse方法的疑问:out关键字后应填写什么?

解决int.TryParse中out参数的使用问题

嘿,我来帮你搞定这个int.TryParse的问题!先看看你现有代码里的两个小问题:

  • 你先用了Convert.ToInt32(Console.ReadLine()),这步完全没必要——如果用户输入的不是整数,这行代码直接就会抛出异常,而你用TryParse的目的就是避免这种情况,所以应该直接把用户输入的字符串传给TryParse。
  • out关键字后面必须跟上一个int类型的变量,这个变量用来接收解析后的结果(不管成功失败都会被赋值)。

关于out参数的核心规则

  • out是用来让方法把处理结果“输出”给调用者的关键字,所以你需要提供一个int类型的变量(可以在out后直接声明,也可以提前声明好)。
  • 这个变量不需要提前赋值,TryParse会在方法内部自动处理:
    • 解析成功时:变量被赋值为转换后的整数,方法返回true。
    • 解析失败时:变量被赋值为int的默认值0,方法返回false。

修正后的完整代码

Console.WriteLine("write a number into the console");
string userInput = Console.ReadLine(); // 先获取用户输入的原始字符串
if (!int.TryParse(userInput, out int parsedNumber)) { 
    // 解析失败的分支
    Console.WriteLine("Not an integer"); 
} else { 
    // 解析成功,parsedNumber就是转换后的整数
    Console.WriteLine($"this is an integer: {parsedNumber}"); 
}

如果你习惯提前声明变量,也可以这么写:

Console.WriteLine("write a number into the console");
string userInput = Console.ReadLine();
int parsedNumber; // 提前声明变量,无需初始化
if (!int.TryParse(userInput, out parsedNumber)) { 
    Console.WriteLine("Not an integer"); 
} else { 
    Console.WriteLine($"this is an integer: {parsedNumber}"); 
}

额外提醒

你原来的代码里把thisnumber(已经是int类型)传给TryParse是错误的——TryParse的第一个参数要求是字符串类型,它的核心作用就是把字符串转换成整数,所以直接传用户输入的原始字符串就对啦。

内容的提问来源于stack exchange,提问作者katic44

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:48:12