C#IList <ilist <(classtype)>&gt; </ilist <(classtype)>的参数

时间:2013-05-15 18:55:36

标签: c# list generics parameters casting

我似乎无法弄清楚为什么以下不起作用。

从阅读中看来,似乎必须以某种方式与this等相关联。

public class Test<T>
{
    public void SomeFunction(IList<IList<T>> ListOfLists)
    {
    }
}

....

List<List<SimpleClass>> lists = new List<List<SimpleClass>>();
new Test<SimpleClass>().SomeFunction( (IList<IList<SimpleClass>>)lists );

如何要求列表实际上是列表列表?我似乎无法理解我做错了什么。

谢谢,

1 个答案:

答案 0 :(得分:5)

List<List<SimpleClass>>不是IList<IList<SimpleClass>>

例如,对于后一种类型,您可以调用lists.Add(new SimpleClass[5])SimpleClass[]实现IList<SimpleClass>。但是你不能用List<List<SimpleClass>>来做,因为每个元素都必须是List<SimpleClass>

但这可能没问题:

List<IList<SimpleClass>> lists = new List<IList<SimpleClass>>();