[英]c# perform a SUM while convert.todouble is null
我是C#
新手,我想執行以下求和,而不是一個或兩個Text Value返回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;
而且我也避免做這樣的事情,因為我只想做一個求和運算,就像我只在一行中做的那樣。
我能怎么做?
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.