程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#數組排序的兩種經常使用辦法

C#數組排序的兩種經常使用辦法

編輯:C#入門知識

C#數組排序的兩種經常使用辦法。本站提示廣大學習愛好者:(C#數組排序的兩種經常使用辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#數組排序的兩種經常使用辦法正文


本文實例講述了C#數組排序的兩種經常使用辦法。分享給年夜家供年夜家參考。詳細以下:

1.第一個例子

界說代碼

#region Array數組排序1
public class Pigeon : IComparable<Pigeon>
//類元素自己繼續比擬接口
{
int XValue;
int YValue;
public string BatchNo { get; set; }
public int CompareTo(Pigeon other)
{
  if (other == null)
 throw new ArgumentNullException("比擬參數為空");
  //按第三個字符比擬
  XValue = Convert.ToInt32(this.BatchNo.Substring(2, 1));
  YValue = Convert.ToInt32(other.BatchNo.Substring(2, 1));
  if (XValue == YValue)
  {
 return 0;
  }
  else if (XValue < YValue)
  {
 return -1;   //前往-1,X排在Y的後面
  }
  else
  {
 return 1;    //前往1,X排在Y的前面
  }
}
}
#endregion

測試代碼

#region 測試Array數組排序1
private void button3_Click(object sender, EventArgs e)
{
  Pigeon[] pigeons = new Pigeon[]{
 new Pigeon(){BatchNo="1256"},
 new Pigeon(){BatchNo="1236"},
 new Pigeon(){BatchNo="1276"},
 new Pigeon(){BatchNo="1216"}
  };
  Array.Sort(pigeons);
  string ResultMsg = "";
  foreach (Pigeon o in pigeons)
  {
 ResultMsg += o.BatchNo + "\r\n";
  }
  MessageBox.Show(ResultMsg);
}
#endregion

1.第二個例子

界說代碼

#region Array數組排序
public class MyBatch   //數組元素類
{
public string BatchNo { get; set; }
}
public enum CompareType   //比擬類型列舉
{
ThreeChar =0,
FourChar=1
}
public class MyBatchCompare:IComparer<MyBatch>
//界說了一個比擬類
{
private CompareType compareType;//界說排序類型
public MyBatchCompare(CompareType compareType)
{
  //結構函數中初始化比擬類型
  this.compareType = compareType;
}
public int Compare(MyBatch x, MyBatch y)
{
  int XValue;
  int YValue;
  if (x == null) throw new ArgumentNullException("x值為空");
  if (y == null) throw new ArgumentNullException("y值為空");
  switch (compareType)
  {          
 case CompareType.ThreeChar:
   //按第三個字符比擬從小到年夜排序
   XValue = Convert.ToInt32(x.BatchNo.Substring(2,1));
   YValue = Convert.ToInt32(y.BatchNo.Substring(2,1));
   if (XValue == YValue)
   {
 return 0;
   }
   else if (XValue < YValue)
   {
 return -1;   //前往-1,X排在Y的後面
   }
   else
   {
 return 1;    //前往1,X排在Y的前面
   }
 case CompareType.FourChar:
   //按第四個字符比擬從小到年夜排序
   XValue = Convert.ToInt32(x.BatchNo.Substring(3,1));
   YValue = Convert.ToInt32(y.BatchNo.Substring(3,1));
   if (XValue == YValue)
   {
 return 0;
   }
   else if (XValue < YValue)
   {
 return -1;   //前往-1,X排在Y的後面
   }
   else
   {
 return 1;    //前往1,X排在Y的前面
   }
 default:
   throw new ArgumentException("比擬類型參數毛病");
  }
}
}
#endregion

測試代碼

#region Array數組排序
private void button2_Click(object sender, EventArgs e)
{
  MyBatch[] batchs ={
   new MyBatch(){BatchNo="1234"},
   new MyBatch(){BatchNo="1263"},
   new MyBatch(){BatchNo="1218"},
   new MyBatch(){BatchNo="1242"}
    };
  //按第三個字符從小到年夜排
  Array.Sort(batchs,new MyBatchCompare(CompareType.ThreeChar));
  string ResultMsg = "";
  foreach (MyBatch o in batchs)
  {
 ResultMsg += o.BatchNo + "\r\n";
  }
  MessageBox.Show(ResultMsg);
  //按第四個字符從小到年夜排序
  Array.Sort(batchs, new MyBatchCompare(CompareType.FourChar));
  ResultMsg = "";
  foreach (MyBatch o in batchs)
  {
 ResultMsg += o.BatchNo + "\r\n";
  }
  MessageBox.Show(ResultMsg);
}
#endregion

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved