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

前端之家收集整理的这篇文章主要介绍了c# – 为什么Int32.TryParse在无法转换时重置out参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我运行这个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#…所以它打印什么?

猜你在找的C#相关文章