关于正确使用TryParse()的新手咨询

本文关键字:新手 于正确 TryParse | 更新日期: 2023-09-27 17:59:43

我刚刚尝试过TryParse,对C#来说是个新手,我只是想了解一切,然后希望能获得最佳实践。。。

从语法上讲,这是有效的:

double number = Double.Parse(C.ReadLine());

TryParse是否只返回布尔值,如果解析成功,则返回true?

当我这样做时:

double number;
bool b = Double.TryParse(C.ReadLine(), out number);

number是解析后的输入,从C.ReadLine()开始,正如预期的那样,一切正常。TryParse通常是这样使用的吗?努力做到高效,感谢这样的建议。

欢迎任何关于方法的建议,以及关于Try(things)在线资源的信息。

关于正确使用TryParse()的新手咨询

TryParse可能失败时,您可以使用它,并且您不希望您的代码抛出异常。

例如

if (!Double.TryParse(someinput, out number))
{
    Console.WriteLine("Please input a valid number");
}

Parse如果成功将返回双倍值,否则将抛出异常。TryParse将返回一个表示操作成功的布尔值,如果成功,它将在您传递给它的out参数中填充解析后的值。它永远不会抛出异常。

通常,当您期望输入字符串不是有效数字,并且您有处理它的逻辑(例如,并显示错误消息)时,应该使用TryParse

如果您不希望输入字符串是有效的双精度之外的任何字符串,则应该使用Parse

唯一的区别是,如果TryParse不能解析双精度,它不会出现异常。

当你想分配一个默认值或忽略代码中的值时,这很方便

示例:

double number;
if (Double.TryParse(C.ReadLine(), out number))
{
    // this is a double so all good
}
else
{
  // not a valid double.
}

示例:

double number;
progressBar.Value = Double.TryParse(C.ReadLine(), out number) ? number : 4.0;
// If number is a valid double, set progressbar, esle set default value of 4.0

你还在Enum上问过TyrParse,这可以像这个一样完成

DayOfWeek fav;
if (Enum.TryParse<DayOfWeek>(Console.ReadLine(), out fav))
{
    // parsed
}