繁体   English   中英

无法隐式转换List <T> 到T

[英]Cannot implicitly convert List<T> to T

我在返回行中遇到以下错误:

"Cannot implicity convert type using System.Collections.Generic.List<T> to T"

我不明白为什么会引发此错误,我的返回类型是IEnumerable,在这里可以看到错误吗?

    public static IEnumerable<T> Batch<T>(this IEnumerable<T> collection, int batchSize)
    {
        List<T> nextbatch = new List<T>(batchSize);
        foreach (T item in collection)
        {
            nextbatch.Add(item);
            if (nextbatch.Count == batchSize)
            {
                yield return nextbatch;
                nextbatch = new List<T>(batchSize);
            }
        }
        if (nextbatch.Count > 0)
            yield return nextbatch;
    }

您不是在说“此方法将返回许多T的集合”,而是在说“此方法将返回许多T的集合”。

换句话说,这就是您需要声明方法的方式:

public static IEnumerable<IEnumerable<T>> Batch<T>(...)
              ^---notice 2 layers---^

但是,假设此方法将始终返回您不想保留所有权的列表,则应通过声明最佳类型以以下方式使消费者更容易:

public static IEnumerable<List<T>> Batch<T>(...)

方法返回类型为IEnumerable<T> ,其yield应该返回T而不是List<T>

有关如何使用收益的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM