如果我运行这个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#…所以它打印什么?