用泛型List实现集合类及排序功能

本文介绍了一个使用C#实现的自定义排序示例。通过定义Person类存储年龄,并创建PersonList集合类继承自List<Person>。利用Comparison<T>委托类型进行自定义排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)首先定义一个Person类
class Person
{
    
private int age;

    
public int Age
    
{
        
get return age; }
        
set { age = value; }
    }


    
public Person(int age)
    
{
        
this.age = age;
    }

}

2)再定义一个PersonList集合类,只要继承List<Person>就好了

class PersonList : List<Person>
{
    
// 根据Comparison定义的签名,定义排序方法
    public static int PersonSort(Person x, Person y)
    
{
        
if (x.Age > y.Age)
        
{
            
return -1;
        }

        
if (x.Age < y.Age)
        
{
            
return 1;
        }

        
return 0;
    }

}

3)入口函数调用
static void Main(string[] args)
{
    PersonList pList 
= new PersonList();
    pList.Add(
new Person(17));
    pList.Add(
new Person(21));
    pList.Add(
new Person(19));
    pList.Add(
new Person(12));

    Console.WriteLine(
"默认顺序:");
    
foreach (Person p in pList)
    
{
        Console.WriteLine(p.Age);
    }


    
// 定义 强类型委托
    Comparison<Person> sorter = new Comparison<Person>(PersonList.PersonSort);
    pList.Sort(sorter);

    Console.WriteLine(
"自定义排序:");
    
foreach (Person p in pList)
    
{
        Console.WriteLine(p.Age);
    }


    Console.ReadKey();
}

Plus:Comparsion<T>这个委托类型用于排序,其签名是
int method( T objectA, T objectB )

小结:

用泛型的方式来定义一个集合类及一些方法,的确比继承自一个CollectionBase来的更方便,其中不用再去手动地写Add()、Remove()之类的方法了。而如果希望集合类的Add()方法使用内部访问修饰符,则还是推荐使用CollectionBase。

转载于:https://www.cnblogs.com/cnxcfeng/archive/2008/05/14/1196402.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值