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 回答