泛型List

 
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; } } 
                            
 
                            
                           
                          
                         
                        
                       
                      
                     
                    
                   
                  
                 
                
               
              
             
            
           
          
         
        
      
     
     
    
    
   
   
  
  
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值