天天看點

【C#學習筆記】對泛型清單進行排序和搜尋

對泛型清單進行排序

泛型方法 非泛型方法 差別
int IComparable<T>.CompareTo(T otherObj) int IComparable.CompareTo(object otherObj) 在泛型版本中是強類型化的
bool IComparable<T>.Equals(T otherObj) N/A 在非泛型接口中不存在,可以改用繼承的object.Equals()
int IComparer<T>.Compare(T objectA,T objectB) int IComparer.Compare(object objectA,object objectB) 在泛型版本中是強類型化的
bool IComparer<T>.Equals(T otherA,T objectB) N/A 在非泛型接口中不存在,可以改用繼承的object.Equals()
int IComparer<T>.GetHashCode(T objectA) N/A 在非泛型接口中不存在,可以改用繼承的object.GetHashCode()

對要排序的類型提供IComparable<T>接口,或者提供IComparer<T>接口,就可以對List<T>進行排序。還可以提供泛型委托作為排序方法。例:

Comparison<T>:這個委托類型用于排序方法,其傳回類型和參數如下:

int method(T objectA,T objectB)

Predicate<T>:這個委托類型用于搜尋方法,其傳回類型和參數如下:

bool method(T targetObject)

繼續閱讀