TryParse() - 为什么这段代码返回0,结果不应为-1?

dts*_*tsg 8 .net c# console tryparse

请参阅以下代码:

string test = "";
int output = -1;

if (int.TryParse(test, out output))
{
    Console.WriteLine("Parsed");
}

Console.WriteLine(output);
Run Code Online (Sandbox Code Playgroud)

TryParse()失败时,不应该跳过块,Console.WriteLine("Parsed")不调用和值output相同(-1)?

它正在回归 0

Tal*_*lha 15

来自MSDN:

当此方法返回时,包含等于字符串中包含的数字的32位有符号整数值,如果转换成功,或者zero转换失败.


Ada*_*rth 10

执行TryParse 必须out在返回之前默认参数,否则它将无法编译 - 无论您是否out已从调用端初始化参数.具有参数的任何方法都是这种情况,out并非特定于TryParse.

编码它的人选择在解析失败时将参数默认为零.

重要的是你不应该认为任何out参数方法out在传入参数时都会尊重参数的原始值.事实上,它永远不会尊重参数,因为编译器会报告:

使用未分配的参数'blah'

如果在方法内部分配参数值之前尝试使用该参数值.因此,您实际上可以保证您分配和赋予的任何值都out将被忽略/覆盖.