泛型的排序有3种方法,分别是:
1、List<T>.Sort(),只能在集合元素实现了IComparable泛型接口时使用
2、List<T>.Sort(Comparison<T>),Comparison<T>是一个方法委托,它带有2个参数T,返回int类型,可以灵活指定如何排序,但是需要编码时手动指定如何排序;
3、List<T>.Sort(IComparer<T>),使用实现了IComparer<T>接口的类给集合排序,可以灵活指定如何排序,但是需预先定义好类的排序方法
这里介绍第二种方法:
首先定义一个类,用作集合的元素
using System;
using System.Collections.Generic;
/// <summary>
/// 学生类
/// </summary>
public class Student
{
private string name;
// 姓名
public string Name
{
get { return name; }
set { }
}
private int age;
// 年龄
public int Age
{
get { return age; }
set { age = value; }
}
private string grade;
// 年级
public string Grade
{
get { return grade; }
set { grade = value; }
}
//构造函数
public Student(string name, int age, string grade)
{
this.name = name;
this.age = age;
this.grade = grade;
}
public override string ToString()
{
return this.name + "," + this.age.ToString() + "," + this.grade;
}
}
下面就开始排序了:
using System;
using System.Collections.Generic;
public class test
{
public static void Main()
{
List<Student> arr = new List<Student>();
arr.Add(new Student("张三", 7, "一年级"));
arr.Add(new Student("李四", 11, "二年级"));
arr.Add(new Student("王五", 21, "一年级"));
arr.Add(new Student("陈六", 8, "三年级"));
arr.Add(new Student("刘七", 15, "二年级"));
// 调用Sort方法,传入一个匿名方法,实现按年级排序
arr.Sort(delegate(Student x, Student y) { return x.Grade.CompareTo(y.Grade ); });
// 循环显示集合里的元素
foreach( Student item in arr)
Console.WriteLine(item.ToString());
// 调用Sort方法,传入一个匿名方法,实现按姓名排序
arr.Sort(delegate(Student x, Student y) { return x.Name.CompareTo(y.Name); });
// 循环显示集合里的元素
foreach( Student item in arr)
Console.WriteLine(item.ToString());
}
}
分享到:
相关推荐
泛型类、泛型方法、泛型接口、泛型委托 泛型类、泛型方法、泛型接口、泛型委托
c#泛型类、泛型方法、泛型接口、泛型委托
C#泛型集合使用实例C#泛型集合使用实例C#泛型集合使用实例
全面总结Java泛型--实例
C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型
这是一个泛型委托的示例,主要是让初学者了解泛型委托的用法,虽然很简单,但是代码有注释,我的这个例子是在vs2010中做的,用vs08的朋友们,最好还是转一下,但是绝对能实现(本程序是控制台应用程序,适合初学者)...
Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力...
不错的文章(.net)--泛型、委托与事件解析
泛型事件委托,涉及了Generic , EventAgrs , Delegate
C#的泛型C#的泛型
C#泛型使用小案例 c#经典案例.pdf
C#泛型、反射实例,分层,自动生成sql语句
这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”...
C#泛型,非泛型实现枚举功能,通过实现接口方法或者使用迭代器块实现
.net,C# 泛型示例代码.net,C# 泛型示例代码.net,C# 泛型示例代码
关于如何在C#中使用泛型,希望对大家有帮助
java泛型使用的视频,讲的不错,可以学习学习
C# 泛型的好处C# 泛型的好处C# 泛型的好处
C#泛型详解文档附实战实例代码,适合C#进阶人群,代码100%能正常运行,有问题可留言!
c#实现对泛型数组排序