我从msdn上读到这个关于Int32.TryParse()
当此方法返回时,包含 等效的32位有符号整数值 到s中包含的数字,如果是 转换成功,如果是,则为零 转换失败。
但是如果传递的字符串本身是字符串表示'0'会发生什么。所以TryParse
将返回零。我怎么知道它是成功还是失败?
答案 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)
该方法返回一个表示成功或失败的布尔值。用那个。整数是传递给方法的引用参数,与方法的返回值无关。
以下是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");
答案 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.
}