ArrayList.Sort 方法 (IComparer)實例

項目中用到的一個ArrayList.Sort 方法 (IComparer)實例
     Private   Structure NodeItem
        
Dim lsid As Integer
        
Dim spno As String
        
Dim lstype As Integer
        
Dim workid As Integer
    
End Structure



    
Sub Main()
        
Try
            
Dim pArrayList As New ArrayList

            
Dim pNitem As New NodeItem
            
With pNitem
                .lsid 
= 10000012
                .spno 
= 200000
            
End With
            pArrayList.Add(pNitem)

            pNitem 
= New NodeItem
            
With pNitem
                .lsid 
= 10000032
                .spno 
= 200000
            
End With
            pArrayList.Add(pNitem)

            pNitem 
= New NodeItem
            
With pNitem
                .lsid 
= 10000002
                .spno 
= 200000
            
End With
            pArrayList.Add(pNitem)

            
Dim pCompare As New LSIDCompareClass
            pArrayList.Sort(pCompare)

        
Catch ex As Exception
            Console.WriteLine(ex.Message)
        
End Try

    
End Sub


    
Private   Class LSIDCompareClass
        
Implements IComparer

        
Public Function Compare(ByVal x As ObjectByVal y As ObjectAs Integer _
           
Implements IComparer.Compare
            
Dim yitem As NodeItem = CType(y, NodeItem)
            
Dim xitem As NodeItem = CType(x, NodeItem)

            
Return New CaseInsensitiveComparer().Compare(xitem.lsid, yitem.lsid)
        
End Function
 'IComparer.Compare

    
End Class

 

關于IComparable 接口的備注:

定義一种特定于類型的通用比較方法,值類型或類通過實現此方法對其實例進行排序。
此接口由具有可排序值的類型實現。它要求實現類型定義單個方法 CompareTo,该方法指示當前實例在排序順序中的位置是位于同一类型的另一个對象之前、之后還是与其位置相同。實例的 IComparable 實現由 Array::Sort 和 ArrayList::Sort 等方法自動調用。

所有數值類型(如 Int32 和 Double)均實現 IComparable,這一點與 String、Char 和 DateTime 是相同的。此外,自定義類型還應提供自己的 IComparable 實現,以便允許對象實例進行排序。

你可能感兴趣的:(ArrayList)