Int32.TryParse()
についてmsdnからこれを読みました
このメソッドが返されるとき、変換が成功した場合はsに含まれる数に等しい32ビットの符号付き整数値が含まれ、変換が失敗した場合はゼロが含まれます。
しかし、渡された文字列自体が「0」の文字列表現である場合はどうなりますか。したがって、TryParse
はゼロを返します。それが成功か失敗かをどうやって知ることができますか?
いいえ、TryParse
returns 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番目のブロックが実行されます。
このメソッドは、成功または失敗を示すブール値を返します。それを使用してください。整数はメソッドに渡される参照パラメーターであり、メソッドの戻り値とは何の関係もありません。
documentation のInt32.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");
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);
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);
}
}
c#7を使用すると、次のようにTryParse内で変数を宣言できます...
if (Int32.TryParse(someText, out int value))
{
// Parse successful. value can be any integer
}
else
{
// Parse failed. value will be 0.
}