A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马杨凯 于 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));后,就不是很清楚了
           }
}

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

1 个回复

正序浏览
route.Sort(sorter);//通过Vectors类的方法Sort()调用VectorDelegates类,然后传递给委托进行排序

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马