c#在convert.todouble为null时执行求和

c#在convert.todouble为null时执行求和,c#,C#,我是C#新手,我想执行以下求和操作,而不是一个或两个文本值返回nullValue alfa = Convert.ToDouble(beta.Text.Replace("°", "")) + Convert.ToDouble(gamma.Text.Replace("°", "")); 文本对象是空的,或者包含一个数字和符号,如37,88°。我会避免做以下事情,因为这不是我想做的: double betaText; double gammaText; if (beta.Text != "") {

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

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;
我也要避免做这样的事情,因为我只想做一个和,就像我在一行的顶部做的一样

我该怎么办

if (double.TryParse(beta.Text.Replace("°", ""), out betaText))
{
}
if (double.TryParse(gamma.Text.Replace("°", ""), out gammaText))
{
}
alfa = betaText + gammaText;
提前感谢您的建议
干杯

我想您可以使用三元运算符:

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;
}

是“beta”和“伽玛”文本框吗?@ OrcCiOnBuluNo如果你认为我的答案回答你的问题,请考虑通过点击那个标记来接受它!我忘了说,如果一个值是空的,它必须被指定为“0”,因为我必须以任何形式求和case@orecchionebruno所以如果只有一个值是空的,你希望和是另一个值吗?所以我应该使用OR来代替AND运算符