1. 程式人生 > >擴展方法、泛型、委托,的小案例

擴展方法、泛型、委托,的小案例

urn 集合 generic cti write lse name 打印 void

1、現有一個字符串集合,集合中存的是數字,把大於等於2的數值,打印出來,需要用到擴展方法、泛型、委托

class Projram{

  static void Main(String[] args){

    //定義一個集合,

    List<string> list = new List<string>{"1","3","5","6","7"};

    //var okList = list.GetList(IsOk);

    //var okList = list.FindAll(IsOk);

    //var okList = list.FindAll(a =>{ if(int.Parse(a) >= 2) return true;return false; });

    //var okList = list.FindAll(a=>int.Parse(a)>=2);

    foreach(item in okList){

      console.writeLine(item);

    }

  }

  //定義一個方法判斷是否大於2

  static bool IsOk(string str){

    if(int.parse(str)>=2)

      return true;

    return false;

  }

}

//給list定義一個擴展方法(擴展方法的三要素,靜態類、靜態方法、this關鍵字)

//一般情況下,將擴展類的方法和要擴展的類的命名空間一致

namespace System.Collections.Generic

{

  //方法簽名(安全的方法指針)

  public delegate bool okdel(T obj);

  public static class ListExt{

    public static List<T> GetList<T>(this List<T> list,del){

      List<T> resultList = new List<T>();

      foreach(var item in list){

       if(del(item))

        resultList.add(item);

      }

      return resultList;

    }

  }

}

擴展方法、泛型、委托,的小案例