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#…所以它打印什么? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |