本帖最后由 黑马杨凯 于 2012-7-16 09:05 编辑
最近学习泛型,在一个练习中有点迷惑,代码如下:
//Vectors类,用于存储Vector类对象的集合
public class Vectors: List<Vector>
{
public Vectors()
{
}
public Vectors(IEnumerable<Vector> initialItems)
{
foreach (Vector vector in initialItems)
{
Add(vector);
}
}
}
//VectorDelegates类,内部静态方法用于传递给委托,做比较,查询方法用
public class VectorDelegates
{
public static int Compare(Vector x, Vector y)
{
if (x.R > y.R)
{
return 1;
}
else if(x.R<y.R)
{
return -1;
}
return 0;
}
public static bool TopRightQuadrant(Vector target)
{
if (target.Theta > 0.0 && target.Theta <= 90.0)
{
return true;
}
else
{
return false;
}
}
}
class Program
{
static void Main(string[] args)
{
Vectors route = new Vectors();
route.Add(new Vector(2.0,90.0));
route.Add(new Vector(1.0,180.0));
route.Add(new Vector(0.5, 45.0));
route.Add(new Vector(2.5, 315.0));
Comparison<Vector> sorter = new Comparison<Vector>(VectorDelegates.Compare);
route.Sort(sorter);//请问这里内部具体怎么工作的,通过使用反编译工具查看,还是不太清晰,请高手详细说明一下,主要是在匹配了Sort(Comparison<T> comparison)之后,运行了Array.Sort<T>(this._items, 0, this._size, (IComparer<T>) new Array.FunctorComparer<T>(comparison));后,就不是很清楚了
}
} |