C# 泛型2---排序

     刚才怕写的太多,万一IE来个罢工岂不是白写了,所以还是先保存一下,下面接着学习排序.
3.泛型排序
  List<T>类可以对其元素排序.Sort()方法有几个重载的版本:
  public void List<T>.Sort();
  public void List<T>.Sort(Comparison<T>);
  public void List<T>.Sort(IComparer<T>);
  public void List<T>.Sort(Int32,Int32,IComparer<T>);

无参数的只能在集合中的元素实现了IComparable接口是使用.
Comparison<T>是一个委托,带有两个类型的参数,返回Int,如果参数相等,该方法就返回零,如果第一个小于第二个参数,该方法就返回一个小于0 的值,否则相反.
比较方法可以使用匿名方法,两个参数类型是Racer,在代码中,使用字符串CompareTo()比较Name属性:
            racer.Sort(delegate(Racer r1, Racer r2) return r1.Name.CompareTo(r2.Name); });
除了使用委托外,ICompare<T>还用于给集合排序.RacerComparer类为Racer类实现了Icompare<T>接口,这个类可以按照名字,和汽车排序:
public class RacerComparer : IComparer<Racer>
    
{
        
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;
        }

     }
截止到这里
我吧全部代码发上来
Code
posted @ 2008-01-28 10:15  白虎  阅读(2807)  评论(1编辑  收藏  举报
非常感谢dudu,感谢博客园提供的各种服务。
联系白虎(David.Du)