我有一个MyObject
;myObjects as List(Of MyObject)
和一个Comparison(Of MyObject)
使用大量比较函数(ByA、ByB、ByC 等)的委托 à la:
Shared Function CompareMyObjectsByName(x As MyObject, y As MyObject) As Integer
Return x.Name.CompareTo(y.Name)
End Function
现在我可以使用
myObjects.Sort(AddressOf CompareMyObjectsByName)
我如何使用它来排序Descending或Ascending?
啦啦
myObjects.Sort(AddressOf CompareMyObjectsByName, ascending)
PS。不要说我应该写两个不同的比较器......
编辑@Jon Skeet
''' <summary>
''' Sorts a list ascensing or descending using a comparison delegate.
''' </summary>
<System.Runtime.CompilerServices.Extension()> _
Public Sub Sort(Of T)(ByVal list As List(Of T), ByVal comparison As Comparison(Of T), ByVal descending As Boolean)
If Not descending Then
list.Sort(comparison)
Else
list.Sort(???)
End If
End Sub