Generic

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Generic
    {
        static void Main11(string[] args)
        {
            PrintAll2<int>(3);
            PrintAll2<string>("c");
            PrintAll2(4);
            PrintAll2("d");
            PrintAll2(5.5);
            Console.ReadLine();
        }

        static void PrintAll2<T>(T x)
        {
            if (typeof(T) == typeof(int))
            {
                Console.WriteLine(x.ToString());
            }
            else if (typeof(T) == typeof(string))
            {
                Console.WriteLine(x);
            }
            else
            {
                Console.WriteLine("Error");
            }
        }
    }

    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) //定义默认比较规则在CompareTo方法 ,重载Interface  IComparable
        {
            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.Age, p2.Age);
        }
    }

    class PersonPredicate
    {
        public static bool MidAge(Person p)
        {
            if (p.Age >= 40)
                return true;
            else
                return false;
        }
    }


    class Persons : List<Person>
    {
        //取得集合中所有人姓名
        public string GetAllNames()
        {
            if (this.Count == 0)
                return "";

            string val = "";
            foreach (Person p in this)
            {
                val += p.Name + ",";
            }

            return val.Substring(0, val.Length - 1);
        }
    }


    class TestGeneric
    {
        static void Main11(string[] args)
        {
            Person p1 = new Person("张三", 30);
            Person p2 = new Person("李四", 220);
            Person p3 = new Person("王五", 150);
            List<Person> persons = new List<Person>();
            persons.Add(p1);
            persons.Add(p2);
            persons.Add(p3);

            persons.Sort();
            foreach (Person p in persons)
            {
                Console.WriteLine(p.Name); //输出次序为 "张三"、"王五" "李四"
            }


            persons.Sort(NameComparer.Default);
            foreach (Person p in persons)
            {
                Console.WriteLine(p.Name); //输出次序为"李四"、"王五"、"张三"
            }

            Predicate<Person> MidAgePredicate = new Predicate<Person>(PersonPredicate.MidAge);
            List<Person> MidAgePersons = persons.FindAll(MidAgePredicate);
            foreach (Person p in MidAgePersons)
            {
                Console.WriteLine(p.Name); //输出"王五"
            }

            //Console.Write(Persons.GetAllNames()); //输出“张三,李四,王五”
        }
    }
}

posted on 2011-11-15 22:31  breakpoint  阅读(98)  评论(0编辑  收藏  举报

导航