欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > C#通过接口 继承接口的类 实现约束 对List内数据类型的值进行排序,可直接复制使用

C#通过接口 继承接口的类 实现约束 对List内数据类型的值进行排序,可直接复制使用

2025/2/28 17:24:33 来源:https://blog.csdn.net/Z18738391697/article/details/145887581  浏览:    关键词:C#通过接口 继承接口的类 实现约束 对List内数据类型的值进行排序,可直接复制使用

工具类

通过接口 继承接口的类 实现约束 对List内数据类型的值进行排序,可直接复制使用

 //工具类 Tools//说明接口的//1.先有接口 2.继承接口的类 3.实现约束
 public interface IComParable<T>            //接口{int ComPareTo(T other);                //在list的数组中,想对几种数据进行排列,就要写几个方法//这里以一种数据举例}public class Person : IComParable<Person>  //继承接口的类{public string Name { get; set; }public int Age { get; set; }public Person(string name, int age){Name = name;Age = age;}//实现接口的方法public int ComPareTo(Person other)     //实现接口的方法{if(other == null) return 1;return this.Age.CompareTo(other.Age);}//重写Tostring方便打印public override string ToString(){return $"{Name}:{Age} years old";}}//使用接口约束internal class MyComparer<T>where T:IComParable<T>{//比较:两个对象public bool IsGreater(T x,T y){//原则意义上来说,T如果是对象,那么是没有办法比较的,但是当前对象中因为有从接口实现的比较方法,在内部是对Age进行的比较,所以这里x和y能够进行比较//注意,这里的x和y必须是Person的对象return x.ComPareTo(y) > 0;}//对列表进行排序public void Sort(List<T> list){//Sort可以立即为只能对值类型的数据进行比较,没办法比较复杂类型list.Sort((x, y) => x.ComPareTo(y));}}

MyComparer<Person> myComparer = new MyComparer<Person>(); //将接口约束实例化
List<Person> list = new List<Person>        //向Person中添加数据并将其添加到List中
{new Person("Alice",40),new Person("Bob",28),new Person("David",35),new Person("Eva",18),
};
//使用自己封装的泛型方法排序
myComparer.Sort(list);                      //使用接口约束中的对列表排序的方法
Console.WriteLine("排序过后");
foreach (var item in list)
{Console.WriteLine(item);                //使用Foreach进行遍历}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词