Int32.TryParse()在失败时返回零 - 成功还是失败?

NLV*_*NLV 35 .net c# int

我从msdn读到这个 Int32.TryParse()

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

但是如果传递的字符串本身是字符串表示'0'会发生什么.所以TryParse将返回零.我怎么知道它是成功还是失败?

Jon*_*eet 66

不,TryParse 返回 true或false表示成功.out参数的值用于解析的值,或者在失败时使用0.所以:

int value;
if (Int32.TryParse(someText, out value))
{
    // Parse successful. value can be any integer
}
else
{
    // Parse failed. value will be 0.
}
Run Code Online (Sandbox Code Playgroud)

因此,如果传入"0",它将执行第一个块,而如果传入"坏数字",它将执行第二个块.

  • 你在if.</ nitpick>的末尾遗漏了一个`)` (3认同)
  • 天哪!我的错。我应该在编程时关闭SO。在这里发帖太容易了:)。 (2认同)

Bol*_*ock 6

该方法返回一个表示成功或失败的布尔值.用那个.整数是传递给方法的引用参数,与方法的返回值无关.

这里的原型Int32.TryParse()来自文档.很明显它返回一个布尔值.第二个参数是一个out int意味着参数通过引用传递,因此它将被方法变异.

public static bool TryParse(
    string s,
    out int result
)
Run Code Online (Sandbox Code Playgroud)

因此,要检查成功或失败,请执行以下操作:

int value;

if (Int32.TryParse("0", out value))
    Console.WriteLine("Parsed as " + value);
else
    Console.WriteLine("Could not parse");
Run Code Online (Sandbox Code Playgroud)