Count是否实现了IEnumerable

时间:2016-07-03 22:54:48

标签: c# .net ienumerable

只是一个简单的问题。

计数是否实现了IEnumerable?假设你有一种屈服的方法,根据我的理解,这个方法在枚举之前一直处于静止状态,但是计数应该需要枚举才能得到计数?

1 个答案:

答案 0 :(得分:4)

是。 IEnumerable .Count的来源是:

    public static int Count<TSource>(this IEnumerable<TSource> source) {
        if (source == null) throw Error.ArgumentNull("source");
        ICollection<TSource> collectionoft = source as ICollection<TSource>;
        if (collectionoft != null) return collectionoft.Count;
        ICollection collection = source as ICollection;
        if (collection != null) return collection.Count;
        int count = 0;
        using (IEnumerator<TSource> e = source.GetEnumerator()) {
            checked {
                while (e.MoveNext()) count++;
            }
        }
        return count;
    }

source

如果IEnumerable实际上可以转换为具有“神奇”计数方式的ICollection,那么它将使用它而不是迭代。