using System;
using System.Collections;
using System.Collections.Generic;
namespace P7_13
{
    class Person : IComparable<Person>
    {
        private string _name; //
        private int _age; //
        //Person
        public Person(string Name, int Age)
        {
            this._name= Name; 
            this._age = Age; 
        }
        public string Name
        {
            get { return _name; }
        }
        public int Age
        {
            get { return _age; }
        }
        //ĬðȽ
        public int CompareTo(Person p)
        {
            return this.Age - p.Age; 
        }
    }
    class NameComparer : IComparer<Person>
    {
        //ʵ
        public static NameComparer Default = new NameComparer(); 
        //Ƚ
        public int Compare(Person p1, Person p2)
        {
            return System.Collections.Comparer.Default.Compare(p1.Name, p2.Name); 
        }
    }
   class Program
    {
        static void Main()
        {
            //Person
            Person p1 = new Person("", 30); 
            Person p2 = new Person("", 20); 
            Person p3 = new Person("", 50); 
            //ΪPersonĶ󼯺
            List<Person> persons = new List<Person>(); 
            //Person뼯
            persons.Add(p1); 
            persons.Add(p2); 
            persons.Add(p3);
            for (int i = 0; i < persons.Count ;i++ )		//personsԪ
                    Console.WriteLine("{0}     䣺{1}",persons[i].Name,persons[i].Age);
           //ĬϹԼϽ
 persons.Sort();            			
            Console .Write("ֶǣ");//personsԪ
            foreach (Person p in persons)
            {
                Console.Write(p.Name); 			//Ϊ""""""
            }
            Console.WriteLine();
            Console.Write("ֶǣ");
            //ԼϽ
            persons.Sort(NameComparer.Default);
            foreach (Person p in persons)            		//
            {
                Console.Write(p.Name); 			//Ϊ""""""
            }
            Console.ReadLine();
        }
    }
}

