尝试解析失败后保留默认值

Keep default value after try parse fails

我有这个代码:

string myStr = "sdfs";
double myDouble = 3;
double.TryParse(myStr, out myDouble);

所以解析会失败,我分配给 "myDouble" 的值也会变为 0。

有没有一种很好的方法来保留这 3 个默认值,即使解析失败?没有像

这样的 if 子句
if(!double.TryParse(myStr, out myDouble))
{
    myDouble = 3;
}

真正做到这一点的唯一方法是这样的:

string myStr = "sdfs";
double myDouble;
double myDoubleDefaultValue = 3;
if (!double.TryParse(myStr, out myDouble))
{
    myDouble = myDoubleDefaultValue;
}

原因是对于 out 变量,该方法必须在完成之前分配一个值。

它仍然是一种 if 子句,但行数更少。这对我有用:

    string myStr = "sdfs";
    double myDouble = Double.TryParse(myStr, out myDouble) ? myDouble : 3;