码迷,mamicode.com
首页 > Windows程序 > 详细

C#中的list的System.Predicate<in T>和System.Comparison<in T>的应用

时间:2015-03-22 06:50:43      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

        public class Data
        {
            public int ma = 1;
            public int mb = 2;
            public int mc = 0;
            static int count = 0;
            public Data()
            {
                count++;
                ma = count; 
            }
        }

  //一句话删除满足要求的集合
  Asm.RemoveAll((Data md) => { return md.ma % 3 == 0 ? true : false; });

  //等同于
        Asm.RemoveAll(Need);
        bool Need(Data md)
        {
            if (md.ma % 3 == 0)
                return true;
            else
                return false;
        }
Asm.RemoveAll(System.Predicate<T>)传入其中的委托原型和System.Func<T,TR>是相同的,只是名字不同.

Asm.RemoveAll(System.Comparison<in T>)传入其中的委托原型和System.Func<TX,TY,int>是相同的,只是名字不同.这个初一看,还很难理解为什么System.Comparison<in T>看起来只是传入了一个参数,但是实际对应的委托原型却是两个参数,这个只有靠记着了,而且是通过返回的数字值的正负来判断排序方式,比较抽象.
            Asm.Sort ((Data mx,Data my)=> //该方法实现的是将Asm由大到小的排序
            {
                if (mx.mb > my.mb) return -1;  //返回-1表示mx被认定排序值小于my,所以排在前面
                else if (mx.mb < my.mb) return 1; //返回1 表示mx被认定排序值大于my,所以排在后面.
                else  return 0;
            });

 

 

C#中的list的System.Predicate<in T>和System.Comparison<in T>的应用

标签:

原文地址:http://www.cnblogs.com/flyant/p/4356657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!