C#数组排序的两种常用方法
本文实例讲述了C#数组排序的两种常用方法。分享给大家供大家参考。具体如下:
1.第一个例子
定义代码
#regionArray数组排序1
publicclassPigeon:IComparable<Pigeon>
//类元素本身继承比较接口
{
intXValue;
intYValue;
publicstringBatchNo{get;set;}
publicintCompareTo(Pigeonother)
{
if(other==null)
thrownewArgumentNullException("比较参数为空");
//按第三个字符比较
XValue=Convert.ToInt32(this.BatchNo.Substring(2,1));
YValue=Convert.ToInt32(other.BatchNo.Substring(2,1));
if(XValue==YValue)
{
return0;
}
elseif(XValue<YValue)
{
return-1;//返回-1,X排在Y的前面
}
else
{
return1;//返回1,X排在Y的后面
}
}
}
#endregion
测试代码
#region测试Array数组排序1
privatevoidbutton3_Click(objectsender,EventArgse)
{
Pigeon[]pigeons=newPigeon[]{
newPigeon(){BatchNo="1256"},
newPigeon(){BatchNo="1236"},
newPigeon(){BatchNo="1276"},
newPigeon(){BatchNo="1216"}
};
Array.Sort(pigeons);
stringResultMsg="";
foreach(Pigeonoinpigeons)
{
ResultMsg+=o.BatchNo+"\r\n";
}
MessageBox.Show(ResultMsg);
}
#endregion
1.第二个例子
定义代码
#regionArray数组排序
publicclassMyBatch//数组元素类
{
publicstringBatchNo{get;set;}
}
publicenumCompareType//比较类型枚举
{
ThreeChar=0,
FourChar=1
}
publicclassMyBatchCompare:IComparer<MyBatch>
//定义了一个比较类
{
privateCompareTypecompareType;//定义排序类型
publicMyBatchCompare(CompareTypecompareType)
{
//构造函数中初始化比较类型
this.compareType=compareType;
}
publicintCompare(MyBatchx,MyBatchy)
{
intXValue;
intYValue;
if(x==null)thrownewArgumentNullException("x值为空");
if(y==null)thrownewArgumentNullException("y值为空");
switch(compareType)
{
caseCompareType.ThreeChar:
//按第三个字符比较从小到大排序
XValue=Convert.ToInt32(x.BatchNo.Substring(2,1));
YValue=Convert.ToInt32(y.BatchNo.Substring(2,1));
if(XValue==YValue)
{
return0;
}
elseif(XValue<YValue)
{
return-1;//返回-1,X排在Y的前面
}
else
{
return1;//返回1,X排在Y的后面
}
caseCompareType.FourChar:
//按第四个字符比较从小到大排序
XValue=Convert.ToInt32(x.BatchNo.Substring(3,1));
YValue=Convert.ToInt32(y.BatchNo.Substring(3,1));
if(XValue==YValue)
{
return0;
}
elseif(XValue<YValue)
{
return-1;//返回-1,X排在Y的前面
}
else
{
return1;//返回1,X排在Y的后面
}
default:
thrownewArgumentException("比较类型参数错误");
}
}
}
#endregion
测试代码
#regionArray数组排序
privatevoidbutton2_Click(objectsender,EventArgse)
{
MyBatch[]batchs={
newMyBatch(){BatchNo="1234"},
newMyBatch(){BatchNo="1263"},
newMyBatch(){BatchNo="1218"},
newMyBatch(){BatchNo="1242"}
};
//按第三个字符从小到大排
Array.Sort(batchs,newMyBatchCompare(CompareType.ThreeChar));
stringResultMsg="";
foreach(MyBatchoinbatchs)
{
ResultMsg+=o.BatchNo+"\r\n";
}
MessageBox.Show(ResultMsg);
//按第四个字符从小到大排序
Array.Sort(batchs,newMyBatchCompare(CompareType.FourChar));
ResultMsg="";
foreach(MyBatchoinbatchs)
{
ResultMsg+=o.BatchNo+"\r\n";
}
MessageBox.Show(ResultMsg);
}
#endregion
希望本文所述对大家的C#程序设计有所帮助。