2012-12-05 53 views
0

我显然只是缺少一些与此。 我有以下几点:Foreach变量错误

List<string> stringList = new List<string>(); 

我然后用一些数据填充它,并做到以下几点:

foreach (List<string> results in stringList) 

但它的错误声称它“不能从string型转换为类型System.Generic.Collections.List<string>” ..但两者都是List<string>类型,所以断开连接在哪里?我确信肯定会有一些非常简单的事情,我显然做错了,但在我的生活中,我找不到它。

回答

11

foreach应该是:

foreach(string s in stringList)

在你的代码,你检查的stringList字符串列表,而不是在列表中的字符串。

+0

嗯,是的,这只是那些日子之一。我认为这将是一种非常明显的东西......谢谢! – wjhguitarman

+0

没问题。我们都去过那里。 – MyCodeSucks

+3

更好的是,使用var而不是string:foreach(var result in stringList) – Roast

3

一种,每次迭代给你的项目之一的时间,所以类型应该是string,不List<string>

foreach (string result in stringList) 
3

当您使用C#中的foreach循环,你是通过收集迭代使用该集合中的单个值重复键入并重复执行操作。因此,对于通用集合类型,您需要在foreach循环中使用单个项目类型。

List<string> stringList = new List<string>(); 
foreach (string stringItem in stringList) 
{ 
    // do something 
} 
3

当你foreach在列表中,则列举在列表中的元素。 stringList包含字符串,所以你需要做的:

foreach (string s in stringList) 
3

的StringList是List<string>类型。

这意味着,您的列表的StringList的每一个元素都将是一个string。 所以,当你做一个foreach (element in stringList),元件有望成为一个string

解决您的问题的最值得推荐的方法是将List<string>替换为您的foreach中的var。如果你总是在foreach语句中使用var,它会自动考虑正确的类型(在这种情况下将string代替List<string>),所以你不必担心找不到什么类型的元素。