【问题标题】:C# Parameter of IList<IList<(ClassType)>>IList<IList<(ClassType)>> 的 C# 参数
【发布时间】:2013-05-15 18:55:36
【问题描述】:

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

从周围阅读看来,它一定与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 );

我怎样才能要求一个列表实际上是一个列表列表?我似乎无法理解我做错了什么。

谢谢,

【问题讨论】:

    标签: c# list generics parameters casting


    【解决方案1】:

    List&lt;List&lt;SimpleClass&gt;&gt; 不是 IList&lt;IList&lt;SimpleClass&gt;&gt;

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

    不过这样就好了:

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

    【讨论】:

    • 我现在看清楚了。哈。非常感谢。我也阅读了您的其他答案以及这篇文章和其他文章之间的内容。这是有道理的。
    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2020-05-17
    • 2017-06-10
    • 2011-09-17
    相关资源
    最近更新 更多