c#执行SUM,而convert.todouble为null

时间:2018-03-31 17:01:25

标签: c#

我是C#新手,我想执行以下总和而不是一个或两个文本值返回null值。

alfa = Convert.ToDouble(beta.Text.Replace("°", "")) + Convert.ToDouble(gamma.Text.Replace("°", ""));

文本对象为空或者包含数字和°符号,如37,88°。我会避免做类似跟随的事情,因为这不是我想做的事情:

double betaText;
double gammaText;

if (beta.Text != "")
{
    betaText = Convert.ToDouble(beta.Text.Replace("°", ""));
}
if (gamma.Text != "")
{
    gammaText = Convert.ToDouble(gamma.Text.Replace("°", ""))
}
alfa = betaText + gammaText;

而且我也会避免做这样的事情,因为我只想做一个Sum,因为我只在一行上做了一次。

我该怎么办?

if (double.TryParse(beta.Text.Replace("°", ""), out betaText))
{
}
if (double.TryParse(gamma.Text.Replace("°", ""), out gammaText))
{
}
alfa = betaText + gammaText;

提前感谢任何建议 干杯

1 个答案:

答案 0 :(得分:0)

我可以使用三元运算符:

double sum =
    (beta.Text == string.Empty ? 0 : Convert.ToDouble(beta.Text.Replace("°", ""))) +   
    (gamma.Text == string.Empty ? 0 : Convert.ToDouble(gamma.Text.Replace("°", "")));

将空字符串视为0。

如您所愿,这可以折叠为一行。

但是,我认为你通过将整个事情减少到一行来牺牲可读性。

我建议你将这个复杂的逻辑提取到一个方法中,然后调用该方法:

int sum = SumOfDegreesString(beta.Text, gamma.Text);

private static double SumOfDegreesString(string s1, string s2) {
    double a = 0, b = 0;
    double.TryParse(s1.Replace("°", ""), out a);
    double.TryParse(s2.Replace("°", ""), out b);
    return a + b;
}