天天看点

【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)

继续阅读