在C#裡面,若是簡單的一維陣列排序,
只要型別宣告成泛型的List or ArrayList,
那們只要使用該類別裡面的API:Sort()
就會自動幫你從小排到大。 (default method:Quick Sort)
但若是你的類型是
struct person
{
public string name;
public int age;
}
你是想針對該結構的年齡做排序怎麼辦?
ArrayList Myperson=new ArrayList();
Myperson.Sort();
像上面那樣寫??那到底是對誰排序?
連compiler都不知道你要排什麼ˊˋ,所以編譯都不會過。
你必須去實做多載的Myperson.Sort()裡面的 System.Collections.IComparer 這類別。
因此我們多做一個類別去繼承IComparer,並實作裡面的方法
如下:
private class PersonAgeCompare:System.Collections.IComparer
{
public int Compare(object x,object y)
{
return ((person)x).age-((person)y).age;//這邊的person就是宣告的結構型別
}
}
實作完成之後,該怎麼去做我們要的排序呢?
>>
PersonAgeCompare AgeCompare =new PersonAgeCompare();//new一個我們實做的類別
Myperson.Sort(AgeCompare );//就這樣兩行 就可以針對age做排序了XD
0 意見:
張貼留言