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

时间:2010-12-29 08:53:16

标签: c# .net int

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

的内容
  

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

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

5 个答案:

答案 0 :(得分:59)

不,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”,它将执行第一个块,而如果传入“坏数字”,它将执行第二个块。

答案 1 :(得分:5)

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

以下是documentationInt32.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");

答案 2 :(得分:2)

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);

答案 3 :(得分:2)

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);
      }
   }

答案 4 :(得分:1)

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

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