簡體   English   中英

C#執行一個SUM,而convert.todouble為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM