我做了一个小程序,用数学计算物理计算。
我有几个if
语句对不同的变量做同样的事情,但它们必须是TextBox
为空,int
为0
}。
以下是例子:
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 == ""
做同样的工作,但要确保一个人不会干涉他人。
答案 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;