【发布时间】:2010-12-29 08:53:16
【问题描述】:
我从 msdn 读到这篇关于 Int32.TryParse() 的文章
当这个方法返回时,包含 等效的 32 位有符号整数值 到 s 中包含的数字,如果 转换成功,如果 转换失败。
但是如果传递的字符串本身是 '0' 的字符串表示会发生什么。所以TryParse 将返回零。怎么知道是成功还是失败?
【问题讨论】:
我从 msdn 读到这篇关于 Int32.TryParse() 的文章
当这个方法返回时,包含 等效的 32 位有符号整数值 到 s 中包含的数字,如果 转换成功,如果 转换失败。
但是如果传递的字符串本身是 '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”,它将执行第一个块,而如果你传入“坏数字”,它将执行第二个块。
【讨论】:
)。
该方法返回一个指示成功或失败的布尔值。用那个。整数是传入方法的引用参数,与方法的返回值无关。
这是来自documentation 的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 值作为返回值,并将转换后的值作为输出参数提供。因此,您可以检查状态的返回 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.
}
【讨论】: