首页 新闻 会员 周边 捐助

IEnumerable接口深入研究

0
[已解决问题] 解决于 2015-01-09 22:36

public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) {
    if (source == null) throw Error.ArgumentNull("source");
    if (predicate == null) throw Error.ArgumentNull("predicate");
    if (source is Iterator<TSource>) return ((Iterator<TSource>)source).Where(predicate);
    if (source is TSource[]) return new WhereArrayIterator<TSource>((TSource[])source, predicate);
    if (source is List<TSource>) return new WhereListIterator<TSource>((List<TSource>)source, predicate);
    return new WhereEnumerableIterator<TSource>(source, predicate);
}

public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) 这是什么?

能不能给解释一下上面的代码什么意思?

从这里我们就可以清晰地看到M$其实是包装了一层,怎么看出来包装了一层?

public override IEnumerable<TSource> Where(Func<TSource, bool> predicate) {
    return new WhereListIterator<TSource>(source, CombinePredicates(this.predicate, predicate));
}这段代码又是什么?和上面的代码什么关系?

能不能给我解释一下?

博学多思的主页 博学多思 | 初学一级 | 园豆:76
提问于:2015-01-08 15:03
< >
分享
最佳答案
0
奖励园豆:5
Launcher | 高人七级 |园豆:45050 | 2015-01-08 15:15
博学多思 | 园豆:76 (初学一级) | 2015-01-09 22:36
其他回答(1)
0
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)

这个只是针对IEnumerable的扩展方法

dudu | 园豆:30778 (高人七级) | 2015-01-08 16:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册