Comparer<T> 命名空间 using System.Collections.Generic;
IComparer<T> 命名空间 using System;
一、Comparer<T>的使用,
1)定义一个T类 。 以Edge.cs为例,用于比较Edge.Length
public class Edge{
public float Length;
}
2)定义一个Comparer<T>类: 。 以 EdgeComparer .cs为例,重载Compare()方法
using System.Collections.Generic;
public class EdgeComparer : Comparer<Edge>
{
//EdgeComparer 继承Comparer<T>,Comparer<T>又继承自 IComparer<T> 所以EdgeComparer 也是 IComparer<T>
//他们都可以重写重写public override int Compare(T x, T y) 来进行比较。
public EdgeComparer(){}
public override int Compare(Edge x, Edge y) //重载比较器的比较方法
{
return x.Length.CompareTo(y.Length);
}
}
3) 实例化EdgeComparer.cs因为 EdgeComparer继承 Comparer<Edge>
EdgeComparer ec = new EdgeComparer();
Comparer<Edge> comparator= (Comparer<Edge>)ec; //比较器comparator用于Edge对象间的比较
4) comparator.Compare(pq[i], pq[j])
二、IComparer<T>的接口的使用, 通过重写public override int Compare(T x, T y) 来进行比较
IComparer<T> 通常与List<T> list 和 list.sort(IComparer<T> comparer ) 共同使用,达到为list排序的目的