欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > c# >内容正文

c#

c#——实现icomparable接口、icomparablet 接口、icomparer接口、icomparert 接口和comparert 类demo -凯发k8官方网

发布时间:2024/10/5 c# 29 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 c#——实现icomparable接口、icomparablet 接口、icomparer接口、icomparert 接口和comparert 类demo 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

icomparable 接口:https://docs.microsoft.com/zh-cn/dotnet/api/system.icomparable?view=netframework-4.8

icomparable 接口:https://docs.microsoft.com/zh-cn/dotnet/api/system.icomparable-1?view=netframework-4.8

icomparer 接口:https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.icomparer?view=netframework-4.8 

icomparer 接口:https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.icomparer-1?view=netframework-4.8

comparer 类:https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.comparer-1?view=netframework-4.8 

using system; using system.collections.generic; using system.collections; using system.linq; using system.text; using system.threading.tasks; using static system.console;namespace consoleapp5 {public class animalcomparer : icomparer//java compartor{public int type { get; set; }//0-name比较,1-weight比较public int compare(object x, object y)//>0: x > y{if (!(x is animal && y is animal))throw new argumentexception(" ");animal ax = x as animal;//(animal)x;animal ay = (animal)y;switch (type){case 0:return ax.name.compareto(ay.name);//break;case 1:return ax.weight - ay.weight;//break;default:return 0;} }}public abstract class animal : icomparable{protected string name;public string name{get { return name; }set { name = value; }}public animal(){name = "the animal with no name";}public animal(string newname){name = newname;}public void feed() => writeline($"{name} has been fed.");public override bool equals(object obj){if (obj is animal){animal a = (animal)obj;if (name == a.name)return true;elsereturn false;}return false;}public int weight { get; set; }public int compareto(object obj)//>0:this > obj{if (obj is animal){animal ani = (animal)obj;//return name.compareto(ani.name);return weight - ani.weight;}elsethrow new argumentexception("错误参数"); }public static bool operator ==(animal op1, animal op2){if (op1.name == op1.name)return true;elsereturn false;}public static bool operator !=(animal op1, animal op2){if (op1.name != op1.name)return true;elsereturn false;}public static bool operator >(animal op1, animal op2){if (op1.name.compareto(op1.name) > 0)return true;elsereturn false;}public static bool operator <(animal op1, animal op2){if (op1.name.compareto(op1.name) < 0)return true;elsereturn false;}}public class cow : animal{public void milk() => writeline($"{name} has been milked.");public cow(string newname) : base(newname) { }}public class chicken : animal{public void layegg() => writeline($"{name} has laid an egg.");public chicken(string newname) : base(newname) { }}class program{static void main(string[] args){cow mycow = new cow("lea");chicken mychicken = new chicken("noa");animalcomparer ac = new animalcomparer { type = 0 };arraylist animalarraylist = new arraylist();//arraylist默认认为其元素是object类型的animalarraylist.add(mycow);//集合的容量能够自动增长animalarraylist.add(mychicken);//animalarraylist.add(100);//装箱//animalarraylist.add("abc"); animalarraylist.sort();//按名字排序animalarraylist.sort(ac);//根据指定比较器来比较object o1 = animalarraylist[0];if (o1.gettype() == typeof(cow))//object类里存储了类型信息{console.writeline("animal");((animal)o1).feed();}if (o1 is animal)console.writeline("o1 is an animal");if (o1 is cow)console.writeline("o1 is a cow");((animal)animalarraylist[0]).feed();//取出数据后,默认是object类型,需转换((chicken)animalarraylist[1]).layegg();foreach (animal item in animalarraylist) { writeline(item.name); }//会执行自动转换//(int)animalarraylist[2]//arraylist = list
网站地图