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


            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;
                });
     
  • 相关阅读:
    VijosP1274:神秘的咒语
    2009年浙大 :找出直系亲属
    django用户信息扩展
    缓存
    自定义认证
    自定义admin
    权限的配置和使用
    form表单
    过滤器 自定义查询
    中间件
  • 原文地址:https://www.cnblogs.com/flyant/p/4356657.html
Copyright © 2020-2023  润新知