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

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

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

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

不, 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. } 

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

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

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

 public static bool TryParse( string s, out int result ) 

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

 int value; if (Int32.TryParse("0", out value)) Console.WriteLine("Parsed as " + value); else Console.WriteLine("Could not parse"); 

Int32.TryParse()方法返回一个boolean值作为return,并将转换后的值作为out参数提供。 因此,您可以检查状态的返回boolean值。

 private static void TryToParse(string value) { int number; bool result = Int32.TryParse(value, out number); if (result) { Console.WriteLine("Converted '{0}' to {1}.", value, number); } else { if (value == null) value = ""; Console.WriteLine("Attempted conversion of '{0}' failed.", value); } } 

TryParse()返回一个布尔值。

  Int32 testInt; if (!Int32.TryParse("123", out testInt)) { MessageBox.Show("Is not a Int32!"); return; // abbrechen } MessageBox.Show("The parst Int32-value is " + testInt); 

使用C#7现在可以在TryParse中声明变量,如…

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