黑马程序员技术交流社区
标题:
请教list.Sort(sorter)内部是怎么工作的?
[打印本页]
作者:
黑马杨凯
时间:
2012-7-15 13:23
标题:
请教list.Sort(sorter)内部是怎么工作的?
本帖最后由 黑马杨凯 于 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));后,就不是很清楚了
}
}
作者:
许庭洲
时间:
2012-7-16 11:19
route.Sort(sorter);//通过Vectors类的方法Sort()调用VectorDelegates类,然后传递给委托进行排序
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2