当前位置: 首页 > news >正文

一键生成网站的软件温岭企业网站建设公司

一键生成网站的软件,温岭企业网站建设公司,查域名备案,网络推广公司是干嘛的文章目录 一、List<T>自带的排序方法1、List<T>调用Sort()排序2、 能够使用 Sort() 方法进行排序的本质 二、自定义类的排序1、通过实现泛型IComparable<T> 接口&#xff08;1&#xff09;示例&#xff08;2&#xff09;直接调用 int 类型的 CompareTo 方法进…

文章目录

  • 一、List<T>自带的排序方法
    • 1、List<T>调用Sort()排序
    • 2、 能够使用 `Sort()` 方法进行排序的本质
  • 二、自定义类的排序
    • 1、通过实现泛型`IComparable<T>` 接口
      • (1)示例
      • (2)直接调用 int 类型的 CompareTo 方法进行简化
      • (3)降序排序
    • 2、 直接实现 IComparable 接口(不推荐)
    • 3、通过委托函数进行自定义排序
      • (1)示例
      • (2)使用匿名方法(`Delegate`)简化
      • (3)再使用 Lambda 表达式简化
  • 三、总结
  • 专栏推荐
  • 完结

一、List自带的排序方法

1、List调用Sort()排序

List<T> 提供了一个内建的 Sort() 方法来对列表进行排序。它的基本用法如下:

List<int> list = new List<int> { 3, 2, 6, 1, 4, 5 };
list.Sort(); // 默认升序排序// 输出排序后的结果
foreach (int item in list)
{Console.WriteLine(item);
}

输出:

1
2
3
4
5
6

2、 能够使用 Sort() 方法进行排序的本质

List<int> 能够使用 Sort() 方法进行排序,背后的原因是 int string等类型实现了 IComparable<T> 接口
在这里插入图片描述

在这里插入图片描述

二、自定义类的排序

1、通过实现泛型IComparable<T> 接口

如果想对自定义对象排序,可以让自定义类实现 IComparable<T> 接口。在这个接口中,必须实现 CompareTo 方法来定义对象间的比较规则。

  • CompareTo 方法的基本结构

    public int CompareTo(T other)
    
    • T 是与当前对象进行比较的类型。
    • other 是传入的另一个对象,它与当前对象进行比较。
  • CompareTo 返回值的含义

    CompareTo 方法用于定义对象的排序规则。通过返回的整数值,来决定当前对象与传入对象之间的位置关系。

    • 返回 负值:当前对象排在传入对象前面。
    • 返回 0:当前对象与传入对象相等(不改变位置)。
    • 返回 正值:当前对象排在传入对象后面。

(1)示例

public class Item : IComparable<Item>
{public int money;public Item(int money){this.money = money;}public int CompareTo(Item? other){if (other == null) return 1;if (this.money > other.money){return 1;// 返回 `正值`:当前对象排在传入对象后面。}else if (this.money < other.money){return -1;// 返回 `负值`:当前对象排在传入对象前面。}else{return 0;// 返回 `0`:当前对象与传入对象相等(不改变位置)。}}
}

调用.Sort()进行排序

List<Item> itemList = new List<Item>
{new Item(45),new Item(10),new Item(99),new Item(24),new Item(100),new Item(12)
};itemList.Sort(); // 使用 Sort() 排序// 输出排序后的结果
foreach (Item item in itemList)
{Console.WriteLine(item.money);
}

输出:

10
12
24
45
99
100

如果想降序,CompareTo返回值正负反过来就行了

(2)直接调用 int 类型的 CompareTo 方法进行简化

这个做法更加简洁,也符合 CompareTo 方法的惯用方式,减少了手动判断大小的代码。

public class Item : IComparable<Item>
{public int money;public Item(int money){this.money = money;}public int CompareTo(Item? other){if (other == null) return 1;// 按照 money 进行排序,升序return this.money.CompareTo(other.money);}
}

(3)降序排序

如果需要降序排序,只需要调整 CompareTo 方法中的返回值逻辑:

public int CompareTo(Item other)
{if (other == null) return 1;// 降序排序return other.money.CompareTo(this.money);
}

2、 直接实现 IComparable 接口(不推荐)

如果你的类不使用泛型接口(IComparable<T>),你也可以使用非泛型的 IComparable 接口来实现排序:

public class Item : IComparable
{public int Money { get; set; }public Item(int money){Money = money;}// 实现 IComparable 接口的 CompareTo 方法public int CompareTo(object obj){if (obj == null) return 1;Item other = obj as Item;if (other == null) throw new ArgumentException("Object is not an Item");return this.Money.CompareTo(other.Money);  // 默认升序排序}
}

这种方式的缺点是需要处理类型转换(as 或者显式转换),并且代码更加冗长。一般情况下,推荐使用泛型 IComparable<T>

3、通过委托函数进行自定义排序

可以通过传入自定义的比较方法(委托)来进行排序。此时,我们定义一个静态方法,并作为参数传入 到Sort() 方法进行排序。

返回值规则和之前一样 0做标准 负数在左(前) 正数在右(后)

(1)示例

using System;public class ShopItem
{public int id;public ShopItem(int id){this.id = id;}
}class Program
{static int SortShopItem(ShopItem a, ShopItem b){return a.id.CompareTo(b.id);  // 升序// return b.id.CompareTo(a.id);  // 降序}static void Main(){List<ShopItem> shopItems = new List<ShopItem>{new ShopItem(2),new ShopItem(1),new ShopItem(4),new ShopItem(3),new ShopItem(6),new ShopItem(5)};shopItems.Sort(SortShopItem); // 使用委托排序// 输出排序后的结果foreach (ShopItem item in shopItems){Console.WriteLine(item.id);}}
}

输出:

1
2
3
4
5
6

(2)使用匿名方法(Delegate)简化

我们也可以使用匿名方法(Delegate)进行排序。这种方法比较灵活,但代码可能会显得比较长:

using System;public class ShopItem
{public int id;public ShopItem(int id){this.id = id;}
}class Program
{static void Main(){List<ShopItem> shopItems = new List<ShopItem>{new ShopItem(2),new ShopItem(1),new ShopItem(4),new ShopItem(3),new ShopItem(6),new ShopItem(5)};shopItems.Sort(delegate (ShopItem a, ShopItem b){return a.id.CompareTo(b.id);  // 升序// return b.id.CompareTo(a.id);  // 降序});// 输出排序后的结果foreach (ShopItem item in shopItems){Console.WriteLine(item.id);}}
}

(3)再使用 Lambda 表达式简化

Lambda 表达式可以让代码更加简洁。它是对委托的一种简化形式,常用于排序操作。

shopItems.Sort((a, b) => {return a.id.CompareTo(b.id);  // 升序// return b.id.CompareTo(a.id);  // 降序
});

或者更简洁的形式

shopItems.Sort((a, b) => a.id.CompareTo(b.id));  // 升序;
//shopItems.Sort((a, b) => b.id.CompareTo(a.id));  // 降序;

三、总结

  • List<T>.Sort() 方法可以直接排序常用类型(如 int, double, string 等)。
  • 对于自定义类型,推荐实现 IComparable<T> 接口,这样可以直接使用 Sort() 方法。
  • 如果不希望修改类本身,也可以通过传入委托函数、匿名方法或 Lambda 表达式来进行排序。
  • 对于需要降序排序的情况,可以调整 CompareTo 方法的返回值,或者在委托中修改比较逻辑。

专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

http://www.yayakq.cn/news/405957/

相关文章:

  • wordpress建站平台怎样做网站开发
  • 东平专业的网站制作做零售去哪个外贸网站
  • 企业营销策划 网站建设做书的网站
  • 宁夏网站开发wordpress更改网站内容
  • 网站制作如皋公司网站设计规划
  • 企业网站如何做网警备案wordpress微名片模板
  • 网站音乐播放代码旅游网站制作视频百度云
  • 备案资料网站查询小型app开发公司
  • 运城做网站哪家好jsp鲜花网站开发源代码
  • 怎样建立个人网站?如何给国外网站做seo
  • 旅游电子商务网站建设技术规范广告联盟广告点击一次多少钱
  • 做网站做软件怎么赚钱吗全国物流网站
  • 现在手机网站用什么做的好非洲做网站用哪里服务器好
  • 免费看电影的网站是什么私人网站服务器搭建
  • 网站建设外包平台直接推广和间接推广区别
  • 做播放器电影网站需要多少钱6济南哪家公司可以做网站
  • 建设部网站业绩如何录入网站开发后端有哪些
  • 用dw做的网站如何攻击织梦做的网站方法
  • 湛江网站搜索引擎推广上海h5网站开发
  • asp.net程序做的网站安全吗怎么做网站怎么引入广告挣钱
  • 北京网站优化wyhseo服装网站目标
  • 影视网站怎么做内链推广怎么做才可以赚钱
  • 网页前端模板网站廊坊网站制作潍坊公司电话
  • 建设一个网站大概多少钱网站建设介绍大全
  • 桂林阳朔2天游玩攻略百度网站自然排名优化
  • 手机建站cms怎么做网站 先简单的聊一下
  • 网站建设销售主管岗位职责网站建设维护需要作假吗
  • 网站建设网页设计做网站太原网站建设方案推广
  • 阿里巴巴国际站做2个网站有用软件外包公司
  • 宁波网站排名优化报价网站的一般制作流程