C 學習筆記 對泛型列表進行排序和搜尋

2021-08-25 19:31:52 字數 798 閱讀 3935

對泛型列表進行排序

泛型方法

非泛型方法

區別int icomparable.compareto(t otherobj)

int icomparable.compareto(object otherobj)

在泛型版本中是強型別化的

bool icomparable.equals(t otherobj)

n/a在非泛型介面中不存在,可以改用繼承的object.equals()

int icomparer.compare(t objecta,t objectb)

int icomparer.compare(object objecta,object objectb)

在泛型版本中是強型別化的

bool icomparer.equals(t othera,t objectb)

n/a在非泛型介面中不存在,可以改用繼承的object.equals()

int icomparer.gethashcode(t objecta)

n/a在非泛型介面中不存在,可以改用繼承的object.gethashcode()

對要排序的型別提供icomparable介面,或者提供icomparer介面,就可以對list進行排序。還可以提供泛型委託作為排序方法。例:

comparison:這個委託型別用於排序方法,其返回型別和引數如下:

int method(t objecta,t objectb)

predicate:這個委託型別用於搜尋方法,其返回型別和引數如下:

bool method(t targetobject)

C 學習筆記 泛型

泛型將型別引數的概念引入了.net,當我們需要設計類和方法,並將它們的型別制定推遲到客戶端 宣告,並例項化該型別和方法時,可以使用泛型。泛型使之前的想法成為了可能。使用泛型避免了執行時強制轉換或裝箱操作帶來的風險。簡單來說,首先制定乙個特定符號代替實際型別,當建立該型別的例項時,才指定它的實際型別。...

C 泛型學習筆記

泛型概述 使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。泛型最常見的用途是建立集合類。net framework 類庫在 system.collections.generic 命名空間中包含幾個新的泛型集合類。應盡可能地使用這些類來 代替普通的類,如 system.collection...

C 學習筆記 泛型演算法

標準庫給容器定義了一些基本的操作,還定義了一組泛型演算法,稱它們為演算法,是因為它們實現了一些經典演算法的公共介面,如排序和搜尋,稱它們是泛型的,是因為它們可以用於不同型別的元素和多種容器型別,甚至包括內建陣列型別。泛型演算法通過迭代器來進行相應的操作,根據操作的不同,可以將泛型演算法分為唯讀演算法...