0

我显然只是错过了一些东西。我有以下内容:

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

然后我用一些数据填充它并执行以下操作:

   foreach (List<string> results in stringList)

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

4

5 回答 5

11

foreach应该是:

foreach(string s in stringList).

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

于 2012-12-05T21:16:26.640 回答
3

for-each 迭代一次为您提供一个项目,因此类型应该是string,而不是List<string>

foreach (string result in stringList)
于 2012-12-05T21:16:38.027 回答
3

在 C# 中使用foreach循环时,您正在遍历集合类型并使用该集合中的单个值重复执行操作。因此,对于通用集合类型,您需要foreach循环中的单个项目类型。

List<string> stringList = new List<string>();
foreach (string stringItem in stringList)
{
    // do something
}
于 2012-12-05T21:16:57.683 回答
3

当您foreach遍历列表时,您正在枚举列表中的元素。 stringList包含字符串,因此您需要执行以下操作:

foreach (string s in stringList)
于 2012-12-05T21:17:12.240 回答
3

stringList 的类型是List<string>.

这意味着您的列表 stringList 的每个元素都将是一个string. 因此,当您执行 a 时foreach (element in stringList),元素应为 a string

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

于 2012-12-05T21:20:45.297 回答