自定义类实集合现接口IComparable达到排序目的

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 类实现接口IComparable达到排序目的
{class Program{static void Main(string[] args){Person[] persons = new Person[]{new Person("David"),new Person("Tom"),new Person("Lisa"),new Person("Jerry"),new Person("Abbot"),};//Person是Person[]数组的元素,如果想要用Array.Sort方法对Person[]对象进行排序,必须在元素类型(Person类)中实现IComparable接口,否则执行Sort方法会报错//即在Person类内创建一个方法CompareTo,实现两个Person对象的name字段字符串比较Array.Sort(persons);foreach (var item in persons){Console.WriteLine(item.Name);}Console.ReadKey();}}public class Person : IComparable{private string name;public Person(string name){this.name = name;}public string Name { get => name; set => name = value; }public int CompareTo(object obj){Person other = obj as Person;//当前person对象的name字段与传进来的person对象的name字段进行比较return this.name.CompareTo(other.name);}}
}

在 C# 中,IComparable 接口用于定义对象的比较规则。它们允许我们对不同的对象进行排序、比较和确定它们的相对顺序。

IComparable 接口定义了一个方法 CompareTo(),该方法接受一个参数,用于与当前对象进行比较。

返回值表示当前对象与参数对象的关系,通常为负整数、零或正整数,分别表示当前对象小于、等于或大于参数对象

上面的demo创建了一个 Person 类,并实现了 IComparable接口。在 CompareTo() 方法中,我们根据姓名进行比较。

然后,我们使用Person[] 来存储多个 Person 对象,并调用 Sort() 方法对列表进行排序。
由于 Person 类实现了 IComparable接口,Sort() 方法可以根据 CompareTo() 方法的返回值来确定对象的相对顺序

demo执行后结构如图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/576563.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android笔记(三十):PorterDuffXfermode实现旋转进度View

背景 核心原理是使用PorterDuffXfermode Path来绘制进度,并实现圆角 效果图 Android笔记(三十)效果演示 进度条绘制步骤 将ImageView矩形七个点的坐标存储起来(configNodes) 他们对应着7个不同的刻度,每个刻度的值 i * &#…

HarmonyOS入门--配置环境 + IDE汉化

文章目录 下载安装DevEco Studio配置环境先认识DevEco Studio界面工程目录工程级目录模块级目录 app.json5module.json5main_pages.json通知栏预览区 运行模拟器IED汉化 下载安装DevEco Studio 去官网下载DevEco Studio完了安装 配置环境 打开已安装的DevEco Studio快捷方式…

fastadmin学习04-一键crud

FastAdmin 默认内置一个 test 表,可根据表字段名、字段类型和字段注释通过一键 CRUD 自动生成。 create table fa_test (id int unsigned auto_increment comment ID primary key,user_id int(10) default 0 null…

C语言--编译和链接

1.翻译环境 计算机能够执行二进制指令,我们的电脑不会直接执行C语言代码,编译器把代码转换成二进制的指令; 我们在VS上面写下printf("hello world");这行代码的时候,经过翻译环境,生成可执行的exe文件&…

让IIS支持.NET Web Api PUT和DELETE请求

前言 有很长一段时间没有使用过IIS来托管应用了,今天用IIS来托管一个比较老的.NET Fx4.6的项目。发布到线上后居然一直调用不同本地却一直是正常的,关键是POST和GET请求都是正常的,只有PUT和DELETE请求是有问题的。经过一番思考忽然想起来了I…

关系型数据库mysql(8)sql高级语句②

目录 一.子查询——Subquery 语法 环境准备 In——查询已知的值的数据记录 子查询——Insert 子查询——Update 子查询——Delete Not In——表示否定,不在子查询的结果集里 Exists——判断查询结果集是否为空 子查询——别名 ​编辑 二.视图 理论&a…

2. Java基本语法

文章目录 2. Java基本语法2.1 关键字保留字2.1.1 关键字2.1.2 保留字2.1.3 标识符2.1.4 Java中的名称命名规范 2.2 变量2.2.1 分类2.2.2 整型变量2.2.3 浮点型2.2.4 字符型 char2.2.5 Unicode编码2.2.6 UTF-82.2.7 boolean类型 2.3 基本数据类型转换2.3.1 自动类型转换2.2.2 强…

大话设计模式之原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,它用于创建对象的复制,同时又能保持对象的封装。原型模式通过复制现有对象的方式来创建新的对象,而无需知道具体创建过程的细节。 在原型模式中,通常会有…

吴恩达2022机器学习专项课程(一) 4.2 梯度下降实践

问题预览/关键词 本节内容梯度下降更新w的公式梯度下降更新b的公式的含义α的含义为什么要控制梯度下降的幅度?导数项的含义为什么要控制梯度下降的方向?梯度下降何时结束?梯度下降算法收敛的含义正确更新梯度下降的顺序错误更新梯度下降的顺…

激光焊接机在不锈钢三角阀制造中的应用与发展

不锈钢三角阀激光焊接机是一种专门用于焊接不锈钢三角阀的高效、精准设备。这种设备在不锈钢三角阀的制造过程中起到了至关重要的作用,其应用主要体现在以下几个方面: ​ 一、激光焊接机在不锈钢三角阀制造中的应用 激光焊接机以其独特的优势&#xff…

【JavaWeb】Day24.Web入门——SPringBootWeb入门

什么是SPring? 我们可以打开Spring的官网(Spring | Home),去看一下Spring的简介:Spring makes Java simple。Spring的官方提供很多开源的项目,我们可以点击上面的projects,看到spring家族旗下的项目,按照流…

语义分割——交通事故数据集

一、重要性及意义 首先,语义分割可以帮助我们更深入地理解交通事故现场的情况。通过对事故现场图像或视频的精确分割,可以识别出道路、车辆、行人等不同的元素,并理解它们之间的关系。这有助于我们更准确地分析事故发生的原因和过程&#xf…