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执行后结构如图所示: