C# 新手询问如何正确使用TryParse()

C# 新手询问如何正确使用TryParse(),c#,C#,我刚刚尝试了TryParse,我是C#新手,我只是想了解一切,然后希望能找到最佳实践 从语法上来说,这是有效的: double number = Double.Parse(C.ReadLine()); TryParse是否仅在解析成功时返回布尔值true 当我这样做时: double number; bool b = Double.TryParse(C.ReadLine(), out number); number是从C.ReadLine()解析的输入,正如预期的那样,一切正常。这就是通常使

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

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

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


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

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

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


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

在可能失败时使用
TryParse
,并且不希望代码引发异常

比如说

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

当TryParse可能失败时,使用
TryParse
,并且不希望代码抛出异常

比如说

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

唯一的区别是,如果TryParse不能解析double,它就不会出现异常

当您希望在代码中指定默认值或忽略该值时,这非常方便

例如:

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
例如:

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
上询问了aboy
tyrprasse
,可以这样做

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

唯一的区别是,如果TryParse不能解析double,它就不会出现异常

当您希望在代码中指定默认值或忽略该值时,这非常方便

例如:

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
例如:

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
上询问了aboy
tyrprasse
,可以这样做

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

我见过TryParse()与double一起使用,我见过Parse()用于枚举。。。我想了解如何构建enumTryParse…场景是提示用户输入最喜爱的一天。TryParse返回一个bool,所以在if条件下应该是可用的,但是当我在这个DayOfWeek fav中执行时,我得到了一个错误;如果((DayOfWeek)Enum.TryParse(Console.ReadLine(),out fav)){}工作解析在try语句中声明如下fav=(DayOfWeek)Enum.Parse(typeof(DayOfWeek),Console.ReadLine());如果可能的话,我想知道如何将其转换为TryParse()语句!我看不出如何使它在语法上有效…我见过TryParse()与double一起使用,我见过Parse()用于枚举。。。我想了解如何构建enumTryParse…场景是提示用户输入最喜爱的一天。TryParse返回一个bool,所以在if条件下应该是可用的,但是当我在这个DayOfWeek fav中执行时,我得到了一个错误;如果((DayOfWeek)Enum.TryParse(Console.ReadLine(),out fav)){}工作解析在try语句中声明如下fav=(DayOfWeek)Enum.Parse(typeof(DayOfWeek),Console.ReadLine());如果可能的话,我想知道如何将其转换为TryParse()语句!看不出如何使它在语法上有效。。。