C# 泛型List排序的實(shí)現(xiàn)
本文主要介紹了C# 泛型List排序的實(shí)現(xiàn),分享給大家,具體如下:

代碼
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;
// 構(gòu)造
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
// 重寫(xiě)字符串
public override string ToString()
{
return "name: " + this.name + " age: " + this.age;
}
// 實(shí)現(xiàn)比較接口
public int CompareTo(Person other)
{
// 根據(jù)返回值排序 升序
if (this.age > other.age)
{ // 大于0 放后面
return 1;
}
else
{ // 小于 0 放前面
return -1;
}
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("泛型數(shù)組的排序");
#region 知識(shí)一 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 知識(shí)二 自定義類的排序
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 知識(shí)三 通過(guò)委托函數(shù)進(jìn)行排序
Console.WriteLine("--------------------通過(guò)委托函數(shù)進(jìn)行排序");
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);
// 使用委托==>函數(shù)排序
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();
}
// 排序函數(shù)
private static int SortPerson(Person leftP, Person rightP)
{
// 根據(jù)返回值排序 升序
if (leftP.age > rightP.age)
{ // 大于0 放后面
return -1;
}
else
{ // 小于 0 放前面
return 1;
}
}
// 打印列表中元素的內(nèi)容
private static void PrintList<T>(List<T> nList)
{
if (nList.Count == 0)
Console.WriteLine("--列表為空數(shù)據(jù)");
for (int i = 0; i < nList.Count; i++)
{
Console.WriteLine(nList[i].ToString());
}
}
}
}

到此這篇關(guān)于C# 泛型List排序的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# 泛型List排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#異步操作后臺(tái)運(yùn)行(backgroundworker類)示例
這篇文章主要介紹了c#異步操作后臺(tái)運(yùn)行(backgroundworker類)示例,需要的朋友可以參考下2014-04-04
C#調(diào)用Java類的實(shí)現(xiàn)方法
以下是對(duì)使用C#調(diào)用Java類的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09
C#基于TCP協(xié)議的服務(wù)器端和客戶端通信編程的基礎(chǔ)教程
這篇文章主要介紹了C#基于TCP協(xié)議的服務(wù)器端和客戶端通信編程的基礎(chǔ)教程,文中講解了C#中TCP編程主要相關(guān)的TcpListener類與TcpClient類用法,需要的朋友可以參考下2016-04-04
Unity打開(kāi)淘寶app并跳轉(zhuǎn)到商品頁(yè)面功能的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于如何利用Unity打開(kāi)淘寶app并跳轉(zhuǎn)到商品頁(yè)面功能的相關(guān)資料,這個(gè)功能目前在網(wǎng)上找不到相關(guān)的解決方法,所以自己寫(xiě)了出來(lái),需要的朋友可以參考下2021-07-07
C#實(shí)現(xiàn)動(dòng)態(tài)執(zhí)行字符串腳本(優(yōu)化版)的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)動(dòng)態(tài)執(zhí)行字符串腳本(優(yōu)化版),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03

