2012-06-23 18 views
3

我的問題是,當我想將(result[i].JobOrder)轉換爲int.I時,我在(result[i].JobOrder)中有一個字符串120100。作爲回報,我得到的不是整數,而是像「0x0001d524」。我不明白爲什麼。Convert.ToInt32 in C#

for (int i = 0; i < result.Count; i++) 
{ 
    if (Convert.ToInt32(result[i].JobOrder) > maxJobOrder) 
    { 
     maxJobOrder = Convert.ToInt32(result[i].JobOrder); 
    } 
} 
+6

看起來像一個int。關閉十六進制顯示。 – harold

回答

15

您的代碼有效,但您已將您的調試器設置爲以十六進制顯示整數。值0x0001d524是整數120100的十六進制表示。

這不是程序中的錯誤,而是IDE的配置選項。如果您使用Visual Studio,則可以通過按下「調試」工具欄中的「十六進制」按鈕來更改此設置。

Hex button


順便說一句,如果您正在使用C#3或更高版本,你可以通過使用Max方法來找到最大的,而不是循環簡化代碼:

maxJobOrder = result.Max(x => int.Parse(x.JobOrder)); 
+1

+1,很好的回答!我可以補充一點,您可能需要提前將JobOrder另存爲一個數字。 – SimpleVar

+0

這工作得很好,謝謝:) – user730611

1

嘗試int.parse()

+1

這是如何回答這個問題的? – CodesInChaos

0

到int.parse使用的建議是略有瑕疵更換Convert.ToInt32

int.parse只要失敗就會拋出以下異常之一。它只接受字符串作爲轉換的輸入。

ArgumentNullException 
FormatException 
OverflowException 

Convert.ToInt32將拋出時,它失敗以下例外之一。另外,它允許傳遞空值,但這意味着它返回0作爲輸出值,並且它還處理多個數據類型以將其轉換爲整數。

FormatException 
OverflowException 

int.TryParse不會引發任何異常,但是,它會返回一個0作爲輸出值的方法返回false,而且只接受字符串作爲輸入轉換。

您應該選擇合適的工具來防止解決方案出現問題。