自分で作ったクラスを、簡単に並べ替える必要があったので、IComparableをインプリメントしてArrayListやArrayオブジェクトのSortメソッドを適用可能にする方法を調べる。
'比較されるデータを実現するクラス Public Class EachObj Implements IComparable 'プロパティ用内部変数 Private innerValue As Integer = 0 '数値を返すプロパティ Public Property Value() As Integer Get Return innerValue End Get Set(ByVal NewValue As Integer) innerValue = NewValue End Set End Property '比較処理 Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo Dim mineValue As Integer = Me.Value Dim targetValue As Integer = CType(obj, EachObj).Value If mineValue > targetValue Then '相手のほうが小さい場合 Return 1 ElseIf mineValue < targetValue Then '相手のほうが大きい場合 Return -1 Else '同じ場合 Return 0 End If End Function End Class
判りやすいように、CompareToをIFで書いているが、実際は数字を足し引きして結果を返すだけでよい。CompareToの戻り値は、正負とゼロしか判断していないので、プラス何百だろうと関係ないから。
で、このクラスを複数格納した親クラスを作って、そいつにIEnumerableインターフェイスを実装すれば、For Eachでくるくる回せて、中のソートも簡単なオブジェクトの完成。