C#中的Convert.ToInt32

时间:2012-06-23 09:24:36

标签: c#

我的问题是,当我想将(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);
    }
}

4 个答案:

答案 0 :(得分:15)

您的代码有效,但您已将调试器设置为以十六进制显示整数。值0x0001d524是整数120100的十六进制表示。

这不是程序中的错误,而是IDE的配置选项。如果使用Visual Studio,则可以通过按“调试”工具栏中的“十六进制”按钮来更改此设置。

Hex button


另外,如果您使用的是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作为输出值,并且它只接受字符串作为转换的输入。

您应该为工作选择合适的工具,以防止解决方案完整性出现任何问题。