Wednesday, January 22, 2014

Example of IComparable and IComparer

IComparable


        class CheckCompare:IComparable<CheckCompare>
        {

            public int A = 0;
            public int B = 0;
            public int C = 0;

            public int Total
            {
                get
                {
                    return this.A + this.B + this.C;
                }
            }

            public int CompareTo(CheckCompare other)
            {
                if (this.Total > other.Total)
                    return 1;
                else if (this.Total < other.Total)
                    return -1;
                else
                    return 0;

            }
        }
       
        static void Main(string[] args)
        {

            List<CheckCompare> ccl = new List<CheckCompare>();
            for (int ii = 3; ii > 0;ii--)
            {
                CheckCompare cc = new CheckCompare() { A = ii, B = ii + 2, C = ii + 8 };
                ccl.Add(cc);

            }

            ccl.Sort();
            foreach (CheckCompare cz in ccl)
                Console.WriteLine(cz.Total);
IComparer

        public class CheckCompareAComparer : IComparer<CheckCompare>
        {

            public int Compare(CheckCompare x, CheckCompare y)
            {
                if (x.Total > y.Total)
                    return 1;
                else if (x.Total < y.Total)
                    return -1;
                else
                    return 0;
            }
        }

        static void Main(string[] args)
        {

           
            List<CheckCompare> ccl = new List<CheckCompare>();
            for (int ii = 3; ii > 0;ii--)
            {
                CheckCompare cc = new CheckCompare() { A = ii, B = ii + 2, C = ii + 8 };
                ccl.Add(cc);

            }

            ccl.Sort(new CheckCompareAComparer());
            foreach (CheckCompare cz in ccl)
                Console.WriteLine(cz.Total);


No comments:

Post a Comment