3

すべてのtextBoxに値が含まれている場合にのみ機能するこのコードがあります。しかし、textboxが空の場合、エラーが発生します。

Int32 Total = Int32.Parse((txtChild1.Text))
            + Int32.Parse(txtChild2.Text)
            + Int32.Parse(txtChild3.Text)
            + Int32.Parse(txtWife1.Text)
            + Int32.Parse(txtWife2.Text)
            + Int32.Parse(txtWife3.Text);

私はそれがIsNullのような関数でなければならないことを知っていますが、整数値のためです..誰かがそれが何であるか知っていますか?

4

5 に答える 5

8

あなたが探しているInt32.TryParse

Int32 val;
if (Int32.TryParse(txtChild1.Text, out val)){
  // val is a valid integer.
}

.Textすべてのプロパティを呼び出して、それらを合計します。簡単にするために拡張機能を作成することもできます(選択した場合)。

public static class NumericParsingExtender
{
    public static Int32 ToInt32(this String input, Int32 defaultValue = 0)
    {
      if (String.IsNullOrEmpty(input)) return defaultValue;
      Int32 val;
      return Int32.TryParse(input, out val) ? val : defaultValue;
    }
}

次に、実際には:

Int32 total = txtChild1.Text.ToInt32() + txtChild2.Text.ToInt32()
            + txtChild3.Text.ToInt32() + /* ... */;

そして、もちろん、

于 2013-01-22T13:42:51.407 に答える
2

TextBox解析する前に、が空でないかどうかを確認する必要があります。そうでない場合は、を使用できます。TryParse

http://msdn.microsoft.com/en-us/library/f02979c7.aspx

于 2013-01-22T13:43:29.267 に答える
2

使用できますInt32.TryParse

Int32 int1 = 0;
Int32.TryParse(txtChild1.Text, out int1);
//.... more int declarations
Int32 total = int1 + int2 + int3; //etc. etc.

TryParseテキストの解析を試み、失敗した場合は変数を 0 に設定します。

一部のロジックをインライン化することもできます (ただし、これによりコードが非常に長くなり、面倒になります)。

Int32 Total = (txtChild1.Text.Length == 0 ? 0 : Int32.TryParse(txtChild1.Text)) + (txtChild2.Text.Length == 0 ? 0 : Int32.TryParse(txtChild2.Text)); //etc. etc.

Int32.TryParse参照: http://msdn.microsoft.com/en-us/library/f02979c7.aspx

参照の場合の略記: http://msdn.microsoft.com/en-gb/library/ty67wk28(v=vs.110).aspx

于 2013-01-22T13:47:58.683 に答える
1

空の文字列 "" は解析できません。解析する前に、ボックスに何かが含まれているかどうかを確認してください。

Textbox.text != ""

他の答えはより速く使用できます tryparse は、より少ないコード行で同じことを行うので、実際には最高です!

于 2013-01-22T13:43:53.907 に答える
1

Int32値型です。あり得ないnull。またはもちろんありますがnullable types、ちょっと..

Int32.Tryparse()メソッドで試してください。

数値の文字列表現を 32 ビットの符号付き整数に変換します。戻り値は、操作が成功したかどうかを示します。

Int32.TryParse(txtChild1.Text, out val)

boolean trues が正常に変換された場合に返します。それ以外の場合は、false.

于 2013-01-22T13:44:01.250 に答える