没有返回路径的扩展方法

时间:2015-10-21 15:07:10

标签: c# extension-methods

我写了一个扩展方法并实现了一些东西 - 它有一个没有返回路径的情况。鉴于下面的扩展方法,它将IEnumerable集合分解为较小的集合。因此,如果我给它一个包含429个元素的集合并传入一个100的块大小。然后我会得到一个集合大小的集合:100,100,100,100,29。

现在,如果我传入一个空集合怎么办?永远不会输入while循环,因为Any()不会返回true。在调试时,我发现返回的对象是一个空的IEnumerable集合。为什么是这样?为什么它不为空?为什么没有可能没有返回路径的方法抛出编译器错误?

以下是有问题的方法:

public static IEnumerable<IEnumerable<T>> Chunk<T>(this IEnumerable<T> source, int chunksize)
{
    while (source.Any())
    {
        yield return source.Take(chunksize);
        source = source.Skip(chunksize);
    }
}

0 个答案:

没有答案