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;
    }
}
相关推荐
@大迁世界19 分钟前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper20 分钟前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
学逆向的22 分钟前
C 指针常量与常量指针
c语言·开发语言·网络安全
低调滴开发1 小时前
3 行代码写崩一个函数?切片才是 Rust 字符串处理的正确姿势
开发语言·后端·rust
CodeYp20191 小时前
第15讲:二叉搜索树
开发语言·c++·二叉搜索树
猫猫.1532 小时前
HashTable、HashMap、ConcurrentHashMap 核心区别总结
java·开发语言·java-ee
乌暮3 小时前
综合案例:宠物电商系统
java·开发语言·spring·mvc·restful·1024程序员节
大文说跨境3 小时前
亚马逊多店铺的图片素材怎么批量去重:EXIF 与哈希的处理流程
开发语言·php
大风起兮云飞扬丶4 小时前
Java——枚举
java·开发语言
小灰灰搞电子4 小时前
Rust+Slint 实现高级动态消息提示框源码分享
开发语言·rust