我是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;
提前感谢任何建议 干杯
答案 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;
}