我的问题是,当我想将(result[i].JobOrder)
转换为int时,我在(result[i].JobOrder)
中有一个字符串120100。作为回报,我得到的不是整数,而是“0x0001d524”。我无法理解为什么。
for (int i = 0; i < result.Count; i++)
{
if (Convert.ToInt32(result[i].JobOrder) > maxJobOrder)
{
maxJobOrder = Convert.ToInt32(result[i].JobOrder);
}
}
答案 0 :(得分:15)
您的代码有效,但您已将调试器设置为以十六进制显示整数。值0x0001d524是整数120100的十六进制表示。
这不是程序中的错误,而是IDE的配置选项。如果使用Visual Studio,则可以通过按“调试”工具栏中的“十六进制”按钮来更改此设置。
另外,如果您使用的是C#3或更新版本,则可以使用Max
方法来查找最大值而不是循环来简化代码:
maxJobOrder = result.Max(x => int.Parse(x.JobOrder));
答案 1 :(得分:1)
尝试使用 Int32.TryParse 看到 http://msdn.microsoft.com/en-us/library/f02979c7.aspx
答案 2 :(得分:1)
尝试将Convert.ToInt32
替换为int.parse()
答案 3 :(得分:0)
使用int.parse的建议有点缺陷。
只要失败,int.parse 就会抛出以下异常之一。它只接受字符串作为转换的输入。
ArgumentNullException
FormatException
OverflowException
Convert.ToInt32 会在失败时抛出以下异常之一。此外, 它允许传递空值,但这意味着它返回0作为输出值,并且它还处理多个数据类型以转换为整数。
FormatException
OverflowException
int.TryParse 不会抛出任何异常,但是,当方法返回false时,它将返回0作为输出值,并且它只接受字符串作为转换的输入。
您应该为工作选择合适的工具,以防止解决方案完整性出现任何问题。