当我正在尝试解析的TextBox中没有输入任何内容时,应用程序崩溃

时间:2016-03-19 13:12:51

标签: c# visual-studio windows-phone-8.1

我正在为Visual Studio中的Windows手机开发应用程序,这是我第一次使用C#语言,因为我是一名Android开发人员,如果没有输入,我无法弄清楚为什么我的应用程序在按下按钮时崩溃

如果有人可以提供帮助那就太棒了。非常感谢!!

private void sum_Click(object sender, RoutedEventArgs e)
{
    decimal n1 = decimal.Parse(num1.Text);
    decimal n2 = decimal.Parse(num2.Text);
    decimal n3 = decimal.Parse(num3.Text);

    if (n1.Equals(null) || n2.Equals(null) || n3.Equals(null))
    {
        sum1.Text = "Enter something!";
    }
    else
    {
        decimal sum = n1 + n2 + n3;
        String m = Convert.ToString(sum);
        sum1.Text = m;
    }
}

1 个答案:

答案 0 :(得分:6)

尝试解析空文本字段(或包含无效数据的字段)最有可能引发异常并导致崩溃。此外,decimal.Parse的结果不会是null,因此if块的if/else部分不会执行。

我建议改为使用decimal.TryParse,这样可以在解析失败时执行某些操作(例如显示您的消息)。

private void sum_Click(object sender, RoutedEventArgs e)
{
    decimal n1;
    decimal n2;
    decimal n3;

    if (decimal.TryParse(num1.Text, out n1)
        && decimal.TryParse(num2.Text, out n2)
        && decimal.TryParse(num3.Text, out n3))
    {
        decimal sum = n1 + n2 + n3;
        String m = Convert.ToString(sum);
        sum1.Text = m;
    }
    else
    {
        sum1.Text = "One or more fields has a missing/invalid value.";
    }
}