1

我刚刚尝试过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) 的在线资源的信息。

4

3 回答 3

4

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

例如

if (!Double.TryParse(someinput, out number))
{
    Console.WriteLine("Please input a valid number");
}
于 2013-02-17T22:52:03.537 回答
2

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

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

如果您不希望输入字符串是有效的 double 之外的任何内容,则应使用Parse.

于 2013-02-17T22:51:22.657 回答
1

唯一的区别是,如果 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

你也问过一个男孩TyrParseEnum可以这样做

DayOfWeek fav;
if (Enum.TryParse<DayOfWeek>(Console.ReadLine(), out fav))
{
    // parsed
}
于 2013-02-17T22:56:20.177 回答