本文主要介绍了C#泛型List排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本文主要介绍了C# 泛型List排序的实现,分享给大家,具体如下:
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace L_List_sort
{
public class Person:IComparable<Person>
{
// 属性
public string name;
public int age;
// 构造
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
// 重写字符串
public override string ToString()
{
return "name: " + this.name + " age: " + this.age;
}
// 实现比较接口
public int CompareTo(Person other)
{
// 根据返回值排序 升序
if (this.age > other.age)
{ // 大于0 放后面
return 1;
}
else
{ // 小于 0 放前面
return -1;
}
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("泛型数组的排序");
#region 知识一 List自带排序方法
Console.WriteLine("--------------------List自带排序方法");
List<int> listInt = new List<int>();
listInt.Add(4);
listInt.Add(2);
listInt.Add(3);
listInt.Add(1);
Console.WriteLine("-------排序前");
PrintList<int>(listInt);
Console.WriteLine("-------排序后");
// 排序
listInt.Sort();
PrintList<int>(listInt);
#endregion
#region 知识二 自定义类的排序
Console.WriteLine("--------------------自定义类的排序");
List<Person> listPerson = new List<Person>();
listPerson.Add(new Person("张三", 20));
listPerson.Add(new Person("李四", 18));
listPerson.Add(new Person("王五", 31));
listPerson.Add(new Person("曹操", 45));
Console.WriteLine("-------排序前");
PrintList<Person>(listPerson);
Console.WriteLine("-------排序后");
// 继承排序(需要继承 接口 :IComparable<Person>)
listPerson.Sort();
PrintList<Person>(listPerson);
#endregion
#region 知识三 通过委托函数进行排序
Console.WriteLine("--------------------通过委托函数进行排序");
listPerson.Clear();
listPerson.Add(new Person("张三", 20));
listPerson.Add(new Person("李四", 18));
listPerson.Add(new Person("王五", 31));
listPerson.Add(new Person("曹操", 45));
Console.WriteLine("-------排序前");
PrintList<Person>(listPerson);
// 使用委托==>函数排序
listPerson.Sort(SortPerson);
Console.WriteLine("-------排序后");
PrintList<Person>(listPerson);
// Lambda 再次排序
listPerson.Sort((leftP, rightP) => {
return leftP.age > rightP.age ? 1 : -1;
});
Console.WriteLine("-------Lambda 再次排序后");
PrintList<Person>(listPerson);
#endregion
Console.ReadLine();
}
// 排序函数
private static int SortPerson(Person leftP, Person rightP)
{
// 根据返回值排序 升序
if (leftP.age > rightP.age)
{ // 大于0 放后面
return -1;
}
else
{ // 小于 0 放前面
return 1;
}
}
// 打印列表中元素的内容
private static void PrintList<T>(List<T> nList)
{
if (nList.Count == 0)
Console.WriteLine("--列表为空数据");
for (int i = 0; i < nList.Count; i++)
{
Console.WriteLine(nList[i].ToString());
}
}
}
}
到此这篇关于C# 泛型List排序的实现的文章就介绍到这了,更多相关C# 泛型List排序内容请搜索得得之家以前的文章希望大家以后多多支持得得之家!
沃梦达教程
本文标题为:C# 泛型List排序的实现
猜你喜欢
- Unity3D实现渐变颜色效果 2023-01-16
- .NET CORE DI 依赖注入 2023-09-27
- c# 模拟线性回归的示例 2023-03-14
- Oracle中for循环的使用方法 2023-07-04
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- Unity Shader实现模糊效果 2023-04-27
- 如何使用C# 捕获进程输出 2023-03-10
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- user32.dll 函数说明小结 2022-12-26