c#Lsit排序

list的自带排序方法

List.Sort()只能对系统自带变量进行排序

Sort(IComparer<T> comparer)

是要实现IComparer的继承及接口CompareTo方法的实现

复制代码
class Item : IComparable<Item>
{
    public int money;

    public Item(int money)
    {
        this.money = money;
    }

    public int CompareTo(Item other)
    {

        if( this.money > other.money )
        {
            return -1;
        }
        else
        {
            return 1;
        }
    }
}

返回值的含义

小于0:

放在传入对象的前面

等于0:

保持当前的位置不变

大于0:

放在传入对象的后面

可以简单理解 传入对象的位置 就是0

如果你的返回为负数 就放在它的左边 也就前面

如果你返回正数 就放在它的右边 也就是后面

Sort(Comparison<T> comparison)

传入一个符合 Comparison<T> 委托的方法/匿名函数/Lambda

复制代码
 class ShopItem
 {
     public int id;

     public ShopItem(int id)
     {
         this.id = id;
     }
 }
 List<ShopItem> shopItems = new List<ShopItem>();
 shopItems.Add(new ShopItem(2));
 shopItems.Add(new ShopItem(1));
 shopItems.Add(new ShopItem(4));


shopItems.Sort(delegate (ShopItem a, ShopItem b)
{
    if (a.id > b.id)
    {
        return -1;
    }
    else
    {
        return 1;
    }
});

shopItems.Sort((a, b) =>{ return a.id > b.id ? 1 : -1;});


shopItems.Sort(SortShopItem);
static int SortShopItem( ShopItem a, ShopItem b )
{
    if (a.id > b.id)
    {
        return -1;
    }
    else
    {
        return 1;
    }
}
相关推荐
哥不想学算法6 小时前
【C++】字符串字面量拼接
开发语言·c++
gugucoding7 小时前
21. 【C语言】打包不同类型:结构体
c语言·开发语言
Brookty7 小时前
【JavaEE】线程安全(一).4:写块串行保安全、CAS
java·开发语言·java-ee·多线程·线程安全
F20226974868 小时前
西门子 PLC 与 C# 通信
开发语言·c#
gugucoding9 小时前
31. 【C语言】堆栈与队列的实现
c语言·开发语言·数据结构·链表
万联WANFLOW9 小时前
多分支企业组网,IP 网段到底该怎么规划
开发语言·php
阿里嘎多学长10 小时前
2026-07-07 GitHub 热点项目精选
开发语言·程序员·github·代码托管
cookies_s_s11 小时前
C++ 字符串动态创建对象 -- 工厂模式、自动注册、模板递归动态调用
服务器·开发语言·c++
盐焗鹌鹑蛋12 小时前
【C++】继承
开发语言·c++