泛型的排序有3種方法,分別是:
1、list.sort(),只能在集合元素實現了icomparable泛型介面時使用
2、list.sort(comparison),comparison是乙個方法委託,它帶有2個引數t,返回int型別,可以靈活指定如何排序,但是需要編碼時手動指定如何排序;
3、list.sort(icomparer),使用實現了icomparer介面的類給集合排序,可以靈活指定如何排序,但是需預先定義好類的排序方法
這裡介紹第二種方法:
首先定義乙個類,用作集合的元素
using system;
using system.collections.generic;
///
/// 學生類
///
public class student
set
}private int age;
// 年齡
public int age
set
}private string grade;
// 年級
public string grade
set
}//建構函式
public student(string name, int age, string grade)
public override string tostring()
}
下面就開始排序了:
using system;
using system.collections.generic;
public class test
);
// 迴圈顯示集合裡的元素
foreach( student item in arr)
console.writeline(item.tostring());
// 呼叫sort方法,傳入乙個匿名方法,實現按姓名排序
arr.sort(delegate(student x, student y) );
// 迴圈顯示集合裡的元素
foreach( student item in arr)
console.writeline(item.tostring());
}}
C 利用泛型,委託 自定義Sort排序規則
target 利用泛型,委託 自定義sort排序規則 已有類vector,要對很多的vector例項自定義排序規則。思路,定義乙個類vectors,繼承list這樣就有了乙個vector型別的集合vectors。這個vectors還有很多的list的方法。實現list中的sort 方法。public...
C 氣泡排序拓展(泛型 委託)
概念 以int為例,每次從頭開始掃瞄兩個相鄰元素的大小,根據所需的順序進行調換,直到不需要交換位置。表示元素已經排序完畢。實現邏輯 依然以int為例,設定乙個 為標誌表示每次迴圈時是否有進行元素互換,初始值為 true 然後進入迴圈體,從頭開始掃瞄,迴圈內若有發生交換操作則將 置為true 一輪排序...
C 委託三 泛型委託
今天一直在研究委託,因為有函式指標的基礎,還容易上手,但是對於一些概念和實踐,總是為了弄的非常清楚而糾結,這幾篇關於委託的文章我是結合 c 與.net4高階程式設計 msdn 借鑑其他人的博文來總結話語,以最直接簡潔的話來闡述清楚 在我弄懂之前網上的感覺都很模糊 namespace genericd...