无法将IList <T>转换为List <T>

时间:2019-09-26 15:58:12

标签: c# list generics

这是我的功能签名:

public IList<IList<int>> LevelOrder(TreeNode root)

以下是显示如何创建从函数返回的IList<IList<int>>的代码段:

IList<IList<int>> result = new List<List<int>>();
        result.Add(new List<int>());
        while (completeQueue.Count != 0)
        {
            current = completeQueue.Dequeue();
            if (level != current.level)
            {
                result.Add(new List<int>());
                level = current.level;
            }
            result[level].Add(current.node.val);
        }

        return result;

运行此函数时,我从最后一行(return result)中收到错误消息: Line 49: Char 36: error CS0266: Cannot implicitly convert type 'System.Collections.Generic.List<System.Collections.Generic.List<int>>' to 'System.Collections.Generic.IList<System.Collections.Generic.IList<int>>'. An explicit conversion exists (are you missing a cast?) (in Solution.cs)

List实现IList接口。为什么这行不通?

1 个答案:

答案 0 :(得分:0)

您返回IList<List<int>>而不是IList<IList<int>>

此类型不同,因为您的List<List<int>>实现了IList<List<int>>,而不是IList<IList<int>>

您应该使用:

var result = new List<IList<int>>();