using System;
using System.Collections;
using System.Collections.Generic;
namespace P7_14
{
    class Person : IComparable<Person>
    {
        private string _name; //
        private int _age; //
        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 PersonPredicate
    {
        //ҳС40
        public static bool MidAge(Person p)
        {
            if (p.Age <= 40)
                return true;
            else
                return false;
        }
    }
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);
            System.Predicate<Person> MidAgePredicate = new 
System.Predicate<Person>(PersonPredicate.MidAge); 
            List<Person> MidAgePersons = persons.FindAll(MidAgePredicate); 
            Console.Write("С40У");
            foreach (Person p in MidAgePersons)
            {
                Console.Write(p.Name+"");
            }
            Console.ReadLine();
        }
    }
}
