此List <list>中的错误是什么?</list>

时间:2012-09-05 07:46:21

标签: c# .net list declaration

这似乎是正确的:

IList<IList<string>> MyList = new List<IList<string>>();
IList<string> List_Temp = new List<string>();
MyList .Add(List_Temp );

这似乎不正确:

IList<List<string>> MyList = new List<List<string>>();
IList<string> List_Temp = new List<string>();
MyList .Add(List_Temp );

为什么第二个不正确?

4 个答案:

答案 0 :(得分:12)

因为您尝试添加一些IList实现而不是List类,这是定义的要求 - IList&lt; 列表&gt;。看看这个:

IList<List<string>> MyList = new List<List<string>>();
IList<string> List_Temp = new Collection<string>(); // ooops!
MyList .Add(List_Temp );

第二行示例是正确的,因为Collection<T>实现了IList<T>,但第三行不正确,因为Collection<T>没有继承List<T>

答案 1 :(得分:3)

MyList包含List<string>类型的元素,但您尝试添加IList<string>类型的元素。

答案 2 :(得分:1)

编译器说它无法将"System.Collections.Generic.IList<string>"投射到"System.Collections.Generic.List<string>";

List<T>定义如下:

public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

IList<T>

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable

因此,List<T>可以投放到IList<T>。反之亦然。

答案 3 :(得分:0)

每次添加到列表中时,

对象类型应该相同,您的mylist列表对象类型是列表,并且您曾经在其中添加iList