zoukankan      html  css  js  c++  java
  • .Net2.0的集合操作 What i know?

    .Net2.0中提供的Array类

    namespace System {
      
    public abstract class Array 
        
    public static TOutput[] ConvertAll<TInput, TOutput>(TInput[] input, Converter<TInput, TOutput> cc);
        
    public static bool Exists<T>(T[] array, Predicate<T> match);
        
    public static T Find<T>(T[] array, Predicate<T> match);
        
    public static T FindLast<T>(T[] array, Predicate<T> match);
        
    public static T[] FindAll<T>(T[] array, Predicate<T> match);
        
    public static int FindIndex<T>(T[] array, Predicate<T> match);
        
    public static int FindLastIndex<T>(T[] array, Predicate<T> match);
        
    public static void ForEach<T>(T[] array, Action<T> action);
        
    public static void Sort<T>(T[] array, Comparison<T> comparer);
        
    public static bool TrueForAll<T>(T[] array, Predicate<T> match);
      }

    }


    以上的集合操作使用到了下面的一些预先定义好的代理.(从他们的名字,你就可以明白他们是干什么的) 

    namespace System {
      
    public delegate void    Action<T>(T item);
      
    public delegate int     Comparer<T>(T first, T second); // result works like strcmp
      public delegate TOutput Converter<TInput, TOutput>(TInput input);
      
    public delegate bool    Predicate<T>(T item);
    }

     
    下面是一些例子  

     int[] list = 12345678910 };
     
      
    int lastOdd = Array.FindLast(list, delegate(int n) return n % 2 == 1; });
      
    // lastOdd is 9
     
      
    int[] evens = Array.FindAll(list, delegate(int n) return n % 2 == 0; });
      
    // evens contains { 2, 4, 6, 8, 10 }
     
      
    bool hasMultipleOfSeven = Array.Exists(evens, delegate(int n) return n % 7 == 0; });
      
    // hasMultipleOfSeven is false
     
      Array.Sort(evens, 
    delegate(int a, int b) return b - a; });
      
    // evens is now { 10, 8, 6, 4, 2 } , you can define the sort algorithm by yourself
     
      
    string[] s = Array.ConvertAll<intstring>(evens, delegate(int n) return "#" + n.ToString(); });
      
    // s is { "#10", "#8", "#6", "#4", "#2" }  this will be cool if the compiler could do the inferencing for ConvertAll


    pretty easy? isn't it? see much more here.

  • 相关阅读:
    微信聊天框测试思路
    巧用&&和|| 让逻辑代码更简洁,逼格看起来更高一点(玩笑脸)
    获取URL中的参数
    解决移动端点击闪烁问题
    npm安装依赖包 --save-dev 和 --save; package.json的devDependencies和dependencies 的区别!
    vue-cli 3配置接口代理
    js小方法积累,将一个数组按照n个一份,分成若干数组
    web前端识别文字转语音
    html 锚点
    ES6 必须要用的数组Filter() 方法,不要再自己循环遍历了!!!
  • 原文地址:https://www.cnblogs.com/kokoliu/p/922053.html
Copyright © 2011-2022 走看看