zoukankan      html  css  js  c++  java
  • 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;
                });
     
  • 相关阅读:
    github
    保存中文文本
    python3与 python2 urllib模块区别
    gitbook 使用粘自csdn
    html基础
    R语言学习笔记之十
    R语言学习笔记之九
    R语言学习笔记之八
    R语言学习笔记之七
    R语言学习笔记之六
  • 原文地址:https://www.cnblogs.com/flyant/p/4356657.html
Copyright © 2011-2022 走看看