日斋
日新月异

 public class Person : IComparable, ICloneable
    {
        public Person()
        {

        }

        public Person(string firstName, string lastName)
        {
            this.FirstName = firstName;
            this.LastName = lastName;
        }

        public string FirstName { get; set; }


        public string LastName { get; set; }

        public override string ToString()
        {
            return String.Format("{0} {1}", FirstName, LastName);
        }

 


        #region IComparable Members

        public int CompareTo(object obj)
        {
            Person other = obj as Person;
            return this.LastName.CompareTo(other.LastName);          
        }

        #endregion

        #region ICloneable Members

        public object Clone()
        {
            return new Person(FirstName, LastName);
        }

        #endregion
    }

 

 

 

 

public class PersonComparer : IComparer
    {
        public enum PersonCompareType
        {
            FirstName,
            LastName
        }

        private PersonCompareType compareType;

        public PersonComparer(PersonCompareType compareType)
        {
            this.compareType = compareType;
        }

        #region IComparer Members

        public int Compare(object x, object y)
        {
            Person p1 = x as Person;
            Person p2 = y as Person;
            switch (compareType)
            {
                case PersonCompareType.FirstName:
                    return p1.FirstName.CompareTo(p2.FirstName);
                case PersonCompareType.LastName:
                    return p1.LastName.CompareTo(p2.LastName);
                default:
                    throw new ArgumentException("unexpected compare type");
            }
           
        }

        #endregion
    }

 

 

 

 

 public static class ShotingDemo
    {
        public static void SortStringArray()
        {
            string[] names = { "Christina Aguillera", "Shakira", "Beyonce", "Gwen Stefani" };
            Array.Sort(names);
            foreach (string name in names)
            {
                Console.WriteLine(name);
            }
        }

        public static void SortPersonArray()
        {
            Person[] persons = {
                new Person("Emerson", "Fittipaldi"),
                new Person("Niki", "Lauda"),
                new Person("Ayrton", "Senna"),
                new Person("Michael", "Schumacher")
                               };
            Array.Sort(persons);
            foreach (Person person in persons)
            {
                Console.WriteLine(person.ToString());
            }
        }

        public static void SortPersonArrayUsingComparer()
        {
            Person[] persons = {
                new Person("Emerson", "Fittipaldi"),
                new Person("Niki", "Lauda"),
                new Person("Ayrton", "Senna"),
                new Person("Michael", "Schumacher")
                               };
            Array.Sort(persons, new PersonComparer(PersonComparer.PersonCompareType.LastName));

            foreach (Person p in persons)
            {
                Console.WriteLine(p);
            }

        }  
    }

 

 

posted on 2010-10-10 16:49  李承隆  阅读(147)  评论(0)    收藏  举报