您的位置:首页 > 编程语言 > C#

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

2014-11-28 23:51 501 查看
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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: