委托作为函数的参数

在List<T>中方法FindAll方法,反编译后的代码如下:

public List<T> FindAll(Predicate<T> match)
        {
            if (match == null)
            {
                ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);
            }
            List<T> list = new List<T>();
            for (int i = 0; i < this._size; i++)
            {
                if (match(this._items[i]))
                {
                    list.Add(this._items[i]);
                }
            }
            return list;
        }

 

使用方法如下:

List<string> l = new List<string>();
l.Add("abc");
l.Add("abcdsdfsdf");
l.Add("adfabcsdfsdf");


List<string> l1 = l.FindAll(delegate(string s) { return s.IndexOf("abc")>0; });

 

posted @ 2013-08-11 15:25  kuailewangzi1212  阅读(407)  评论(0编辑  收藏  举报