在向文本框输入负值时,我收到错误消息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
答案 0 :(得分: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
答案 1 :(得分:1)
输入负值意味着您尝试将负的有符号值转换为无符号值,从而导致溢出异常。使用Int32或检查负数并做一些事情来防止错误。
答案 2 :(得分:1)
您无法将负值转换为无符号值。 The MSDN明确指出您将获得例外。而是执行以下操作:
Int32 n= Convert.ToInt32(textBox2.Text);
UInt32 m = (UInt32) n;