【发布时间】:2019-03-15 05:15:07
【问题描述】:
人们一直建议使用 Int32.TryParse,但我发现对于任何字符串,例如“4e”,它会给我输出 0(我会直接打印我的输入),而 Int32.Parse 会给出一个例外。使用 TryParse 有没有我看不到的一面?任何帮助将不胜感激
【问题讨论】:
-
不要忽略布尔返回值。
人们一直建议使用 Int32.TryParse,但我发现对于任何字符串,例如“4e”,它会给我输出 0(我会直接打印我的输入),而 Int32.Parse 会给出一个例外。使用 TryParse 有没有我看不到的一面?任何帮助将不胜感激
【问题讨论】:
您可以像这样检查布尔返回值:
string text1 = "x";
int num1;
bool res = int.TryParse(text1, out num1);
if (res == false)
{
// String is not a number.
}
【讨论】:
TryParse 和Parse 应该以相同的方式处理有效数字。不同之处在于他们表示输入无效的方式。 Parse 会抛出异常,而TryParse 返回一个boolean 需要您手动处理。
if (!int.TryParse(input, out var result))
{
Console.Write("NOK"); // Don't use result, it will have the default value of 0
}
else
{
Console.Write($"OK {result}"); // Ok, reuslt has the parsed value of input
}
【讨论】: