我有以下代码
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'
老实说我不知道为什么,因为当我将结果返回给list变量时,我使用ToString()来显式转换它。有人可以帮我理解这里发生了什么。如果需要,我可以发布更多代码。
我试图只是谷歌的错误消息,它似乎是一般的错误消息,但没有人真正解释错误的原因。
提前谢谢
答案 0 :(得分:9)
您的列表为List<int>
,并且您正在尝试向List
添加字符串值,但您不能这样做。
您可以使用int
或int.Parse
或使用Convert.ToInt32
int.TryParse
如果您的Value
包含整数值,那么您可以明确地将其转换为:
list.Add((int) node.Attributes["name"].Value);
或者您可以使用:
list.Add(Convert.ToInt32(node.Attributes["name"].Value));
答案 1 :(得分:3)
您正在尝试将字符串添加到只能包含int的
的列表中你需要将字符串解析成一个int,就像这样......
list.Add(int.Parse(node.Attributes["name"].Value));
答案 2 :(得分:1)
您的列表属于int
类型,因此您应该将要添加的值转换为int
:
list.Add(int.Parse(node.Attributes["name"].Value));
答案 3 :(得分: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);