C# 单元抛出溢出异常

C# 单元抛出溢出异常,c#,C#,在文本框中输入负值时,我收到一个错误,提示未处理的异常:System.OverflowException:值对于UInt32太大或太小。 这是我的密码: UInt32 n = Convert.ToUInt32(textBox2.Text); if (n > 0) //code else //code 这是因为UInt32未签名。您应该改用Int32(无符号) 因此,您的代码应该如下所示: Int32 n

在文本框中输入负值时,我收到一个错误,提示
未处理的异常:System.OverflowException:值对于UInt32太大或太小。

这是我的密码:

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

这是因为
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

这是因为
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

输入负值意味着您正试图将负有符号值转换为无符号值,从而导致溢出异常。使用Int32或检查负数,并采取措施防止错误

输入负值意味着您正试图将负的有符号值转换为无符号值,从而导致溢出异常。使用Int32或检查负数,并采取措施防止错误

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

Int32 n= Convert.ToInt32(textBox2.Text);
UInt32 m = (UInt32) n;

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

Int32 n= Convert.ToInt32(textBox2.Text);
UInt32 m = (UInt32) n;

你期望什么样的行为
uint
不能表示负数(它是无符号的),因此抛出异常而不是返回无意义的数据是一个不错的选择。您可能想要
uint.TryParse
,但您的问题有点不明确。为什么不使用内置的
int
别名?我建议您阅读一本关于编程基础知识的好书!你期望什么样的行为
uint
不能表示负数(它是无符号的),因此抛出异常而不是返回无意义的数据是一个不错的选择。您可能想要
uint.TryParse
,但您的问题有点不明确。为什么不使用内置的
int
别名?我建议您阅读一本关于编程基础知识的好书!只需将值存储在Int32中,然后使用强制转换。UInt32 unsignedValue=(UInt32)signedValue;我得到了答案,所以我删除了评论,但你的解决方案将不起作用。它不检索带符号整数的相同值。您应该首先自己检查它是否适用于适合有符号整数的值。显然,负值被转换为正值,因此它会移动所有内容。只需将该值存储在Int32中,然后使用转换即可。UInt32 unsignedValue=(UInt32)signedValue;我得到了答案,所以我删除了评论,但你的解决方案将不起作用。它不检索带符号整数的相同值。您应该首先自己检查它是否适用于适合有符号整数的值。显然,负值被转换成正值,所以它改变了一切。啊!我混合了Uint和Int,但现在已经足够清楚了。但是为什么要这样编写代码呢?调用函数有点贵!不?库沙尔嗯,我想没那么贵。甚至一点也不贵。但是,我调用了一次解析函数,您也这样做,因此没有额外的调用。@kushal我这样编写代码的原因是控制:我控制值是否被解析,然后可以决定是抛出和异常,还是只向用户显示消息。如果我把你的问题弄错了,请告诉我,这样我才能回答正确的问题。啊!我混合了Uint和Int,但现在已经足够清楚了。但是为什么要这样编写代码呢?调用函数有点贵!不?库沙尔嗯,我想没那么贵。甚至一点也不贵。但是,我调用了一次解析函数,您也这样做,因此没有额外的调用。@kushal我这样编写代码的原因是控制:我控制值是否被解析,然后可以决定是抛出和异常,还是只向用户显示消息。如果我把你的问题弄错了,请告诉我,这样我才能回答正确的问题。