首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UInt抛出OverflowException

UInt抛出OverflowException
EN

Stack Overflow用户
提问于 2012-08-06 23:26:39
回答 3查看 2.1K关注 0票数 1

在文本框中输入负值时,我收到一个错误,显示为Unhandled Exception: System.OverflowException: Value was either too large or too small for a UInt32.

下面是我的代码:

代码语言:javascript
复制
 UInt32 n = Convert.ToUInt32(textBox2.Text);    
         if (n > 0)
          //code 
         else
         //code
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-06 23:28:47

这是因为UInt32是未签名的。您应该改用Int32 (未签名)。

因此,您的代码应该如下所示:

代码语言:javascript
复制
Int32 n = Convert.ToInt32(textBox2.Text);
if (n > 0)
  //code 
else
  //code

然而,我更愿意这样说:

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2012-08-06 23:30:30

输入负值意味着您正在尝试将负有符号值转换为无符号值,这会导致溢出异常。要么使用Int32,要么检查负数,并采取措施防止出错。

票数 1
EN

Stack Overflow用户

发布于 2012-08-06 23:30:30

不能将负值转换为无符号值。The MSDN特别声明你会得到一个异常。相反,请执行以下操作:

代码语言:javascript
复制
Int32 n= Convert.ToInt32(textBox2.Text);
UInt32 m = (UInt32) n;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11831250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档