我有这样的代码:保持默认值失败
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 = 3;
double.TryParse(myStr, out myDouble);
因此,解析会失败,而且我分配到“myDouble”将变为0。
值是有一个很好的方法来保持3的默认值,即使解析失败?无需if子句像
if(!double.TryParse(myStr, out myDouble))
{
myDouble = 3;
}
它仍然是一种if条款,但行数较少。这适用于我:
string myStr = "sdfs";
double myDouble = Double.TryParse(myStr, out myDouble) ? myDouble : 3;
它可能工作,但你应该使用一个有意义的名称而不是“幻数”3的变量。 –
真正做到这一点是这样的唯一途径:
string myStr = "sdfs";
double myDouble;
double myDoubleDefaultValue = 3;
if (!double.TryParse(myStr, out myDouble))
{
myDouble = myDoubleDefaultValue;
}
的原因是,与出变量,方法必须完成之前分配一个值。
您是否正在寻找简短的代码,这可能会导致它难以维护,或易于维护的代码可以重新使用?根据你如何定义“一种不错的方式”,可以使用不同的选项。 –
我正在寻找保留“3”的分配值,例如在解析失败后,可能存在尽可能少的代码行,所以就像易于维护和重用一样。 – Clock
在这种情况下,编写自己的函数来做这件事是一个好主意,就像SomeUser发布在他们的答案中一样。它的复杂性隐藏起来,你的任务只需要像'double myDouble = ParseAsDoubleOrDefault(myStr,3)'。当然,你需要修改建议的函数来返回值,而不是解析成功。 –