C 泛型 使用委託的Sort排序方法

2021-08-25 23:46:43 字數 1185 閱讀 2210

泛型的排序有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...