无法将类型'string'转换为'System.Collections.Generic.IList <string> </string>

时间:2011-06-08 09:02:09

标签: c# visual-studio

我一直收到这个错误:

“无法将类型'string'转换为'System.Collections.Generic.IList”

这是我的计划:

class Program
{


    static void Main(string[] args)
    {


        List<string> list = new List<string>(); 
        list.Add("a");
        list.Add("b");
        list.Add("c");
        list.Add("d");



        foreach (IList<string> name in list ) 
        {
            Console.WriteLine(String.Format("{{{0} {1} {2}}}", list[0], list[1], list[2]));

6 个答案:

答案 0 :(得分:4)

您有一个列表,并且您已添加4个字符串。该列表是一个字符串列表,而不是一个字符串列表。

我怀疑你的意思(因为你正在做.Format

List<string> list = new List<string>(); 
// 4 x Add
Console.WriteLine(String.Format("{{{0} {1} {2}}}", list.ToArray()));

或者,如果你的意思是每个中的前3个字符(对于你的样本数据不起作用,因为每个字符都是长度为1的字符串):

foreach(string name in list) {
    Console.WriteLine(
        string.Format("{{{0} {1} {2}}}", name[0], name[1], name[2]));
}

答案 1 :(得分:2)

foreach (IList<string> name in list )更改为foreach (string name in list )

foreach声明中的第一个标记是您要枚举的集合的元素类型。

您还可以使用var关键字让编译器在编译期间找出类型(同时仍然可以获得name变量的静态类型):foreach (var name in list)

答案 2 :(得分:1)

为每个循环删除IList<String>并使用String

 foreach(String name in list)
 {
    Console.WriteLine(String.Format("{{{0} {1} {2}}}", list[0], list[1], list[2]));
 }

答案 3 :(得分:0)

更改循环

foreach(string name in list)
{
    Console.WriteLine(name);
}

答案 4 :(得分:0)

你应该这样做吗?

foreach (string name in list )

答案 5 :(得分:0)

您的问题是list包含strings而不是IList<string>

将for循环更改为:

foreach (string name in list ) 
    {
        Console.WriteLine(name);
    }

或丢失foreach并将Console.Writeline留在那里