「Q19_1_1」、「Q19_10_1」、「Q19_5_1」という形式の文字列の ArrayList があります。通常のソート方法では、リストは次のようにソートされます
"Q19_1_1"
"Q19_10_1"
"Q19_5_1"
しかし、名前の2番目の整数と3番目の整数に基づいて数値的にソートしたいと思います。だから私はしたい:
"Q19_1_1"
"Q19_5_1"
"Q19_10_1"
私のサブ:
Dim varSet As New ArrayList
varSet.Add("Q19_1_1")
varSet.Add("Q19_10_1")
varSet.Add("Q19_5_1")
varSet.Sort(New VariableComparer())
私はIComparerを持っています:
Public Class VariableComparer
Implements IComparer(Of String)
Public Function Compare(ByVal x As String, ByVal y As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
Dim varPartsX As Array
Dim varPartsY As Array
varPartsX = x.Split("_")
varPartsY = y.Split("_")
Return String.Compare(varPartsX(1), varPartsY(1))
End Function
End Class
しかし、ソートしようとするとエラーが発生します:
Unable to cast object of type 'VBX.VariableComparer' to type 'System.Collections.IComparer'.
VariableComparer は IComparer を実装していますが、IComparer(Of String) 型にすることはできないと思いますか?
この問題を解決するにはどうすればよいですか? 私は何が欠けていますか?