[英]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.