web-dev-qa-db-ja.com

Int32.TryParse()は失敗するとゼロを返します-成功または失敗?

Int32.TryParse()についてmsdnからこれを読みました

このメソッドが返されるとき、変換が成功した場合はsに含まれる数に等しい32ビットの符号付き整数値が含まれ、変換が失敗した場合はゼロが含まれます。

しかし、渡された文字列自体が「0」の文字列表現である場合はどうなりますか。したがって、TryParseはゼロを返します。それが成功か失敗かをどうやって知ることができますか?

35
NLV

いいえ、TryParsereturns 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」を渡すと最初のブロックが実行されますが、「不良番号」を渡すと2番目のブロックが実行されます。

68
Jon Skeet

このメソッドは、成功または失敗を示すブール値を返します。それを使用してください。整数はメソッドに渡される参照パラメーターであり、メソッドの戻り値とは何の関係もありません。

documentationInt32.TryParse()のプロトタイプを次に示します。ブール値を返す返すことは非常に明らかです。 2番目のパラメーターは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");
6
BoltClock

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

Int32.TryParse()メソッドは、boolean値を戻り値として返し、変換された値を出力パラメーターとして提供します。したがって、ステータスの戻り値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);
      }
   }
2
Kangkan

c#7を使用すると、次のようにTryParse内で変数を宣言できます...

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