整理if语句

时间:2014-12-08 21:27:51

标签: c# if-statement operators

我做了一个小程序,用数学计算物理计算。

我有几个if语句对不同的变量做同样的事情,但它们必须是TextBox为空,int0 }。

以下是例子:

if (firstForceTextBox.Text == "")
{
    firstForceInt = 0;
}
else
{
    firstForceInt = Convert.ToInt16(firstForceTextBox.Text);
}

if (secondForceTextBox.Text == "")
{
    secondForceInt = 0;
}
else
{
    secondForceInt = Convert.ToInt16(secondForceTextBox.Text);
}

我想确保firstForceTextBox.Text == ""secondForceTextBox.Text == ""做同样的工作,但要确保一个人不会干涉他人。

4 个答案:

答案 0 :(得分:7)

澄清我在这里做的事情。

首先,我为所述的两个int设置了默认值。

然后我使用int.TryParse来确保如果将“banana”放入文本框中,代码不会中断。 如果失败,它将只包含0,就像它应该的那样。

int firstForceInt = 0, secondForceInt = 0;
if(!int.TryParse(firstForceTextBox.Text, out firstForceInt))
{
    // Report error to GUI
}
if(!int.TryParse(secondForceTextBox.Text, out secondForceInt))
{
    // Report error to GUI
}

答案 1 :(得分:3)

这个怎么样:

firstForceInt = string.IsNullOrEmpty(firstForceTextBox.Text) ? 0 : Convert.ToInt16(firstForceTextBox.Text);
secondForceInt = string.IsNullOrEmpty(secondForceTextBox.Text) ? 0 : Convert.ToInt16(secondForceTextBox.Text);

答案 2 :(得分:2)

我会应用一种名为extract方法的重构技术来获得类似的东西

private UInt16 GetInt16(TextBox textBox)
{
    if (textBox.Text == "")
    {
        return 0;
    }
    else
    {
        return Convert.ToInt16(textBox.Text);
    }

private void Later() 
{
    firstForceInt = GetInt16(firstForceTextBox);
    secondForceInt = GetInt16(secondForceTextBox);
}

答案 3 :(得分:-1)

你可以从这里获取我的功能: Elegant TryParse

并扩展它:

public class Extensions
{
public static int? TryParse(string this Source)
{
if(string.IsNullOrEmpty(Source)) return null;
if(int.tryparse .... 
}

}

以后你可以写

firstForceInt = firstForceTextBox.Text.TryParse() ?? 0;