C#_Array排序
在开发程序的过程中,经常需要对数组进⾏排序,⽽且排序的条件也千变万化。
举例:将⼀个⽂件夹下的所有⽂件汇集出来⽣成⼀个数组,但这个数组的顺序默认是按照命名排列的,但我们需要按照⽂件建⽴的时间排列。收集⽂件夹内的⽂件
DirectoryInfo dinfo =new DirectoryInfo(@"c:\Test");
FileInfo[] fileInfo = dinfo.GetFiles();
设置⽐对规则
新建⼀个类派⽣⾄IComparer接⼝,该类只有⼀个⽅法 。
int Compare(Object x,Object y)
//⽐较两个对象并返回⼀个值,该值指⽰⼀个对象⼩于、等于还是⼤于另⼀个对象。sort命令排序
//摘⾃msdn
public class MyDateSorter : IComparer
{
public int Compare(object x,object y)
{
if(x ==null&& y ==null){
return0;
}
if(x ==null){
return-1;
}
if(y ==null){
return1;
}
// 利⽤强制类型转换,将object对象转化为FileInfo对象
FileInfo xInfo =(FileInfo)x;
FileInfo yInfo =(FileInfo)y;
// 依修改⽇期排序,最后创建的⽂件放在数组的最后⾯
return xInfo.CreationTime.CompareTo(yInfo.CreationTime);//递增
// return yInfo.CreationTime.CompareTo(xInfo.CreationTime);//递减
}
}
利⽤Array的Sort⽅法获取排序后的数组
Array.Sort(fileInfo,new MyDateSorter());
该⽅法是Array类的静态⽅法,不需要实例化,参数1是需要排序的数组,参数2是排序规则。其返回结果是直接修改原数组,⽽不是⽣成⼀个新的数组。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论