首页 新闻 会员 周边

c# 扩展方法问题

0
悬赏园豆:10 [已解决问题] 解决于 2016-12-29 17:04

code:

    public static class EnumerableExtensions
    {

        public static T Find<T>(this IEnumerable<T> enumerable, Predicate<T> match)
        {
           return enumerable.Find(match);
        }
 
    }

调用:

ErpDic.Value.AsParallel().Find(x => x.code == code)

ErpDic是个  private Lazy<List<sys_dict_common>> ErpDic;

为什么这个 扩展方法find 进入了无限递归呢?不明白。

s_p的主页 s_p | 初学一级 | 园豆:138
提问于:2016-12-29 16:43
< >
分享
最佳答案
0

enumerable.Find(match);这里不就是在调用public static T Find<T>(this IEnumerable<T> enumerable, Predicate<T> match)....

而且要是你这么写不递归.你就把这扩展方法删了也一样能调用明白不.

1.递归了,因为你写了这个方法

2.没递归,那你就不用写这方法.

结论:你冷静下来好好想想人生

收获园豆:7
吴瑞祥 | 高人七级 |园豆:29449 | 2016-12-29 16:57

你冷静下来好好想想人生......

 

这一句不认同。其他的说的对。

s_p | 园豆:138 (初学一级) | 2016-12-29 17:03

哈哈 有道理。 

大壮他哥 | 园豆:11 (初学一级) | 2017-01-02 10:35
其他回答(2)
0

IEnumerable<T>没有Find方法,你这里这样用肯定是递归了。

收获园豆:3
Daniel Cai | 园豆:10424 (专家六级) | 2016-12-29 16:47
0

很简单,你认为不是递归,你把 Find方法改名为Find1,你看你方法体里面的方法能找到引用不,说明还是自己调用 自己,还没有退出机制,就是无限递归

some-body | 园豆:242 (菜鸟二级) | 2023-06-01 16:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册