泛型List

来源:互联网 发布:java实体类转fastjson 编辑:程序博客网 时间:2024/06/07 19:09
 
using System;using System.Collections.Generic;using System.Text;namespace List_T_Sample{  public class Racer  {    private string name;    public string Name    {      get{return name;}      set{name=value;}    }        private string car;    public string Car    {      get { return car;}      set{car =value ;}    }    public Racer(string name, string car)    {      this.name = name;      this.car = car;    }    public override string ToString()    {      return name+","+car;    }  }  public class FindRacer  {    private string car;    public FindRacer(string car)    {      this.car = car;    }    public bool DrivingCarPredicate(Racer racer)    {      return racer.Car == car;    }  }  public class RacerComparer : IComparer  {    public enum CompareType    {      Name, Car    }    private CompareType compareType;    public RacerComparer(CompareType compareType)    {      this.compareType = compareType;    }    public int Compare(Racer x, Racer y)    {      int result = 0;      switch (compareType)      {        case CompareType.Name:          result = x.Name.CompareTo(y.Name);          break;        case CompareType.Car:          result = x.Car.CompareTo(y.Car);          break;      }      return result;    }  }  public class Person  {    private string firstname;    private string lastname;    public Person(string firstname, string lastname)    {      this.firstname = firstname;      this.lastname = lastname;    }    public override string ToString()    {      return firstname + " " + lastname;    }  }    class Program  {         static void Main(string[] args)    {             //增加Racer实例      List racers = new List();      racers.Add(new Racer("Michael Schumacher", "Ferrari"));      racers.Add(new Racer("Juan Pablo Montoya","Mclaren"));      racers.Add(new Racer("Kimi Raikkonen","Ferrari"));      racers.Add(new Racer("Mark Webber", "BMW"));      //循环显示List      foreach (Racer r in racers)      {        Console.WriteLine(r);      }      Console.WriteLine();      //Predicate查找Ferrari      FindRacer finder = new FindRacer("Ferrari");      foreach (Racer racer in racers.FindAll(new Predicate(finder.DrivingCarPredicate)))      {        Console.WriteLine(racer);      }      Console.WriteLine();      //单独写一条新建Predicate的委托,查找Ferrari      Predicate pr = new Predicate(finder.DrivingCarPredicate);      foreach (Racer racer in racers.FindAll(pr))      {        Console.WriteLine(racer);      }      Console.WriteLine();      //ForEach,Action委托      Action action_racer = new Action(display);      racers.FindAll(pr).ForEach(action_racer);      Console.WriteLine();      //ForEach,Action事件      MyDisplayEvent += new Action(display);      racers.FindAll(pr).ForEach(MyDisplayEvent);      Console.WriteLine();      //ForEach,匿名方法      racers.FindAll(new Predicate(finder.DrivingCarPredicate))        .ForEach(delegate(Racer r) { Console.WriteLine(r); });      Console.WriteLine();      //Sort 匿名方法      racers.Sort(delegate(Racer r1, Racer r2)      { return r1.Name.CompareTo(r2.Name); });      foreach (Racer r in racers)      {        Console.WriteLine(r);      }      Console.WriteLine();      //Sort,Comparison委托,      Comparison comparison_racer = new Comparison(compareName);      racers.Sort(comparison_racer);      foreach (Racer r in racers)      {        Console.WriteLine(r);      }      Console.WriteLine();      //Sort,Comparison事件      MyComparisonNameEvent += new Comparison(compareName);      racers.Sort(MyComparisonNameEvent);      foreach (Racer r in racers)      {        Console.WriteLine(r);      }      Console.WriteLine();      //Sort,RacerComparer类      racers.Sort(new RacerComparer(RacerComparer.CompareType.Car));      foreach (Racer r in racers)      {        Console.WriteLine(r);      }      Console.WriteLine();      //ConvertAll 匿名方法      List persons1 = racers.ConvertAll        (delegate(Racer r)        {          int ixSeparator = r.Name.LastIndexOf(" ") + 1;          string lastname = r.Name.Substring(ixSeparator, r.Name.Length - ixSeparator);          string firstname = r.Name.Substring(0, ixSeparator - 1);          return new Person(firstname, lastname);        });      foreach (Person p in persons1)      {        Console.WriteLine(p);      }      Console.WriteLine();      //ConvertAll 委托      Converter converter_person = new Converter(convertPerson);      List persons2 = racers.ConvertAll(converter_person);      foreach (Person p in persons2)      {        Console.WriteLine(p);      }      Console.WriteLine();      //ConvertAll  事件      MyConverterPersonEvent += new Converter(convertPerson);      List persons3 = racers.ConvertAll(MyConverterPersonEvent);      foreach (Person p in persons3)      {        Console.WriteLine(p);      }      Console.WriteLine();    }    //-----------    private static void display(Racer r)    {      Console.WriteLine(r);    }    private static event Action MyDisplayEvent;    //-----------    private static int compareName(Racer r1, Racer r2)    {      return r1.Name.CompareTo(r2.Name);    }    private static event Comparison MyComparisonNameEvent;    //-----------    private static Person convertPerson(Racer r)    {      int ixSeparator = r.Name.LastIndexOf(" ") + 1;      string lastname = r.Name.Substring(ixSeparator, r.Name.Length - ixSeparator);      string firstname = r.Name.Substring(0, ixSeparator - 1);      return new Person(firstname, lastname);    }    private static event Converter MyConverterPersonEvent;  }}
原创粉丝点击