Private Class HogeComparer Implements IComparer(Of MySt) Public Function Compare(ByVal x As MySt, ByVal y As MySt) As Integer Implements IComparer(Of MySt).Compare Return x.hoge.Length - y.hoge.Length End Function End Class
Private Class MogeComparer Implements IComparer(Of MySt) Public Function Compare(ByVal x As MySt, ByVal y As MySt) As Integer Implements IComparer(Of MySt).Compare Return x.moge - y.moge End Function End Class
といった感じで、IComparerインターフェイスを実装したクラスをソート対象にしたいメンバごとに作成し、 Dim?MyList?As?New?List(Of?MySt) とした場合(ソートしたい配列がMyListのとき) hogeでソートしたい場合は Dim hogeCmp As New HogeComparer() ArrayList.Sort(MyList, hogeCmp) 'Array.List.Sort(MyList, New HogeComparer())でもよい mogeでソートしたい場合は Dim mogeCmp As New MogeComparer() ArrayList.Sort(MyList, mogeCmp) '同上 と呼び出せばそれぞれのメンバでソートができる まあ、わざわざ対象ごとにクラス作らないといけないところがめんどくさいが。