2016-03-19 11 views
1

私はVisual StudioでWindows phone用のアプリケーションを開発しています。これは初めてのC#言語です。何も入力されていない場合、ボタンが押されたときにアプリがクラッシュする理由を理解できません。私が解析しようとしているテキストボックスに何も入力しないとアプリケーションがクラッシュする

誰かがそれがすばらしいと助けることができたら。どうもありがとう!!

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; 
    } 
} 
+0

decimal.parseと入力すると「a」と入力したときにエラーが発生します。有効な数字ではありません。したがって、nullではなくエラーをテストする必要があります。 – BugFinder

+0

"c言語"!= c# –

答えて

6

空のテキストフィールド(または無効なデータのフィールド)を解析しようとすると、例外がスローされてクラッシュする可能性が最も高くなります。また、decimal.Parseの結果はnullにならないため、if/elseブロックのif部分は実行されません。

代わりに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."; 
    } 
} 
関連する問題