1

テキストボックスに負の値を入力すると、次のようなエラーが発生しますUnhandled Exception: System.OverflowException: Value was either too large or too small for a UInt32.

これが私のコードです:

 UInt32 n = Convert.ToUInt32(textBox2.Text);    
         if (n > 0)
          //code 
         else
         //code
4

3 に答える 3

6

これUInt32は、署名されていないために発生します。Int32代わりに (署名なし) を使用する必要があります。

したがって、コードは次のようになります。

Int32 n = Convert.ToInt32(textBox2.Text);
if (n > 0)
  //code 
else
  //code

しかし、私はむしろ次のように言いたいです:

int n;
// TryParse method tries parsing and returns true on successful parsing
if (int.TryParse(textBox2.Text, out n))
{
    if (n > 0)
         // code for positive n
    else
         // code for negative n
}
else
     // handle parsing error
于 2012-08-06T15:28:47.027 に答える
1

負の値を入力すると、負の符号付きの値を符号なしの値に変換しようとしているため、オーバー フロー例外が発生します。Int32 を使用するか、負の数をチェックして、エラーを防ぐために何かをしてください。

于 2012-08-06T15:30:29.507 に答える
1

負の値を符号なしの値に変換することはできません。MSDNには、例外が発生することが明確に記載されています。代わりに、次のようにします。

Int32 n= Convert.ToInt32(textBox2.Text);
UInt32 m = (UInt32) n;
于 2012-08-06T15:30:29.830 に答える