c# 内部类使用接口IComparer实现排序


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 内部类使用接口实现排序
{
    class Person
    {
        private string _name;
        private int _age;
        public Person(string name, int age)
        {
            _name = name;
            _age = age;
        }
        public string Name
        {
            get { return _name; }
        }
        public int Age
        {
            get { return _age; }
        }
        private static AgeComparer _ageCom = null;   //仅是一个静态变量。
        public static IComparer<Person> AgeCom
        {
            get
            {
                if (_ageCom == null)  //当第一次访问静态属性的时候,自动创建一个对象。
                {
                    _ageCom = new AgeComparer();
                }
                return _ageCom;
            }
        }
        private class AgeComparer : IComparer<Person>
        {
            int IComparer<Person>.Compare(Person x, Person y)
            {
                return x._age.CompareTo(y._age);
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person[] p1 = new Person[5];
            p1[0] = new Person("王亮", 27);
            p1[1] = new Person("张明敏", 21);
            p1[2] = new Person("孙晓峰", 28);
            p1[3] = new Person("赫敏", 25);
            p1[4] = new Person("刘铭", 23);

            foreach (Person p in p1)
            {
                Console.WriteLine(p.Name + " " + p.Age.ToString());
            }
            Console.WriteLine("将对年龄进行排序并打印结果:");
            Array.Sort(p1, Person.AgeCom);
            foreach (Person p in p1)
            {
                Console.WriteLine(p.Name + " " + p.Age.ToString());
            }
            Console.ReadKey();
        }
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM