嘻哈人间,我醉逍遥

while(true){this.StudyDotNet(DotNetLanguage.CSharp);}

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
想对ArrayList排一排序,却发现还要写一个继承自IComparer的类,用其它方法都不行。看来只得写了。呵呵。



    public class NormalDepartmentUserObjectCollection:System.Collections.ArrayList
    {
        bool cvt = true;
        public NormalDepartmentUserObjectCollection()
        {

        }

        public NormalDepartmentUserObjectCollection(System.Collections.ArrayList C)
        {

        }

        public override void Sort()
        {
            cvt = !cvt;
            Sort(new Sorter(cvt));
        }

        class Sorter:System.Collections.IComparer
        {
            bool convert = false;

            internal Sorter(bool cvt)
            {
                convert = cvt;
            }

            #region IComparer 成员

            public int Compare(object x, object y)
            {
                if(convert)
                    return String.Compare(((NormalDepartmentUserObject)y).Name, ((NormalDepartmentUserObject)x).Name);
                else
                    return String.Compare(((NormalDepartmentUserObject)x).Name, ((NormalDepartmentUserObject)y).Name);
            }

            #endregion
        }

        }


很简单,只要实现一个Compare的方法即可,因为我们是对一个自定义类的Name属性进行比较,所以就使用了String的Compare方法。


posted on 2004-05-07 17:29  嘻哈呵嘿  阅读(4760)  评论(4编辑  收藏  举报
欢迎访问无垠IT教学网论坛