加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么Int32.TryParse在无法转换时重置out参数?

发布时间:2020-12-15 03:45:07 所属栏目:百科 来源:网络整理
导读:如果我运行这个C#代码 int realInt = 3; string foo = "bar"; Int32.TryParse(foo,out realInt); Console.WriteLine(realInt); Console.Read(); 我得到了0.我想知道为什么!因为我找不到任何理由.这迫使我为每个解析创建临时变量.所以,请!伟大的宇宙编者,启
如果我运行这个C#代码
int realInt = 3;  
string foo = "bar";  
Int32.TryParse(foo,out realInt); 

Console.WriteLine(realInt);  
Console.Read();

我得到了0.我想知道为什么!因为我找不到任何理由.这迫使我为每个解析创建临时变量.所以,请!伟大的宇宙编者,启发我!

解决方法

它是“出”,而不是“参考”.在方法里面,它必须分配它(不要先阅读它)来满足“out”的含义.

实际上,“out”是一个语言关注(不是一个框架) – 所以一个被管理的C实现可能会忽略这个…但是它更符合它.

事实上;如果方法返回false,你根本不应该看这个值;将其视为垃圾,直到下次分配为止.据说返回0,但这很少有用.

另外 – 如果没有这样做(即如果它保留了值);这将打印什么:

int i;
int.TryParse("gibber",out i);
Console.WriteLine(i);

这是非常有效的C#…所以它打印什么?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读