我一直收到这个错误:
“无法将类型'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]));
答案 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
留在那里