2014-02-18 22 views
2

我有以下代碼ARGUMENT1:無法從「字符串」到「廉政」錯誤轉換成列表

public static List<int> GetAllYear() 
{ 
    XmlDocument document = new XmlDocument(); 
    document.Load(strXmlPath); 
    XmlNodeList nodeList = document.SelectNodes("Year"); 
    List<int> list = new List<int>(); 
    foreach (XmlNode node in nodeList) 
    { 
     list.Add(node.Attributes["name"].Value.ToString()); //This line throws error 
    } 
    return list; 
} 

當我嘗試構建解決方案我收到以下錯誤:

Argument1: cannot convert from 'string' to 'int' 

老實說,我不知道爲什麼,因爲當我將結果返回給列表變量時,我使用ToString()將其明確地轉換。有人能幫我理解這裏發生了什麼。如果需要,我可以發佈更多代碼。

我試圖只是谷歌錯誤消息,它似乎是一個通用的錯誤消息,但沒有人真正解釋錯誤的原因。

預先感謝您

+1

閱讀錯誤更仔細。 'ToString()'不會轉換爲'int'。你想'int.Parse()'。 – SLaks

+0

我曾嘗試int.Parse(),它也沒有工作。 Habib和其他人有正確的答案 – MaximusPrime

+0

最安全的方法是使用'Int32.TryParse' - 檢查我的答案。 –

回答

8

您的清單是List<int>和你想爲一個字符串值添加到您的List,你不能這樣做。

您可以分析安全使用int.TryParse

如果使用int.ParseConvert.ToInt32或字符串intValue包含整數值,那麼你可以明確地投它想:

list.Add((int) node.Attributes["name"].Value); 

,或者您可以使用:

list.Add(Convert.ToInt32(node.Attributes["name"].Value)); 
+0

爲什麼這被低估? – Habib

+0

謝謝你這個游泳工作!我沒有降低這一點! – MaximusPrime

+0

@MaximusPrime,不客氣,我知道你沒有:)。現在所有的降價似乎都已經收回。 – Habib

3

您正在嘗試添加一個字符串轉換隻能包含INT的

您需要將字符串解析成像這樣一個int ...

list.Add(int.Parse(node.Attributes["name"].Value)); 
+0

爲什麼downvotes? – Kevin

+0

我想有人喜歡downvote – Habib

+0

我想所以...嘆...好,所有3個答案都是正確的... ... – Kevin

1

你的列表清單是int類型的,所以你應該轉換其所需的值要添加到int

list.Add(int.Parse(node.Attributes["name"].Value)); 
1

您嘗試將string值域int類型的列表。在添加到列表之前,必須將字符串值(如果可能)轉換爲int。我建議你以這種方式(using Int32.TryParse)避免意外的異常,以防發現無法轉換爲int的字符串。

int number; 
bool result = Int32.TryParse(node.Attributes["name"].Value, out number); 
if (result) list.Add(number); 
相關問題