K
Kurt Tischer
Hi!
where is my mistake? For sorting the CompareTo()-Function is called, this
part works! But, the function Equals() is never called. Why not? Please give
me a hint. Thanks!
Here my small test-class:
Class bspKlasse
Implements IComparable
Public KapTitel As String
Public atPage As Integer
Public Overloads Function CompareTo(ByVal aBspObj As Object) As Integer
Implements IComparable.CompareTo
If TypeOf aBspObj Is bspKlasse Then
Return KapTitel.CompareTo(CType(aBspObj, bspKlasse).KapTitel)
End If
Throw New ArgumentException("Object ist not a bspKlasse")
End Function
Public Overloads Function Equals(ByVal aBspObj As Object) As Boolean
If TypeOf aBspObj Is bspKlasse Then
If atPage = CType(aBspObj, bspKlasse).atPage Then Return True Else
Return False
End If
Throw New ArgumentException("Object ist not a bspKlasse")
End Function
Public Overloads Function Equals(ByVal aBspObj As Object, ByVal bBspObj As
Object) As Boolean
If TypeOf aBspObj Is bspKlasse AndAlso TypeOf bBspObj Is bspKlasse Then
If CType(aBspObj, bspKlasse).atPage = CType(bBspObj, bspKlasse).atPage
Then Return True Else Return False
End If
Throw New ArgumentException("Object ist not a bspKlasse")
End Function
End Class
Sub TestSub()
Dim aKlasseArrayList As New ArrayList
Dim indx As Integer
For indx = 0 To 10
Dim aK As New bspKlasse
aK.KapTitel = (indx Mod 3).ToString
aK.atPage = indx
aKlasseArrayList.Add(aK)
Next
Dim dK As bspKlasse
For Each dK In aKlasseArrayList
Console.WriteLine("dk.KapTitel = {0} dk.atPage = {1}", dK.KapTitel,
dK.atPage)
Next
Try
aKlasseArrayList.Sort()
Catch ex As Exception
MsgBox(ex.Message, , ex.Source)
End Try
Console.WriteLine("sorted")
For Each dK In aKlasseArrayList
Console.WriteLine("dk.KapTitel = {0} dk.atPage = {1}", dK.KapTitel,
dK.atPage)
Next
Dim tk As New bspKlasse
tk.atPage = 5
Dim inArrayAt As Integer
If aKlasseArrayList.Contains(tk) Then
inArrayAt = aKlasseArrayList.IndexOf(tk)
Console.WriteLine(inArrayAt.ToString)
End If
inArrayAt = aKlasseArrayList.IndexOf(tk)
Console.WriteLine(inArrayAt.ToString)
End Sub
where is my mistake? For sorting the CompareTo()-Function is called, this
part works! But, the function Equals() is never called. Why not? Please give
me a hint. Thanks!
Here my small test-class:
Class bspKlasse
Implements IComparable
Public KapTitel As String
Public atPage As Integer
Public Overloads Function CompareTo(ByVal aBspObj As Object) As Integer
Implements IComparable.CompareTo
If TypeOf aBspObj Is bspKlasse Then
Return KapTitel.CompareTo(CType(aBspObj, bspKlasse).KapTitel)
End If
Throw New ArgumentException("Object ist not a bspKlasse")
End Function
Public Overloads Function Equals(ByVal aBspObj As Object) As Boolean
If TypeOf aBspObj Is bspKlasse Then
If atPage = CType(aBspObj, bspKlasse).atPage Then Return True Else
Return False
End If
Throw New ArgumentException("Object ist not a bspKlasse")
End Function
Public Overloads Function Equals(ByVal aBspObj As Object, ByVal bBspObj As
Object) As Boolean
If TypeOf aBspObj Is bspKlasse AndAlso TypeOf bBspObj Is bspKlasse Then
If CType(aBspObj, bspKlasse).atPage = CType(bBspObj, bspKlasse).atPage
Then Return True Else Return False
End If
Throw New ArgumentException("Object ist not a bspKlasse")
End Function
End Class
Sub TestSub()
Dim aKlasseArrayList As New ArrayList
Dim indx As Integer
For indx = 0 To 10
Dim aK As New bspKlasse
aK.KapTitel = (indx Mod 3).ToString
aK.atPage = indx
aKlasseArrayList.Add(aK)
Next
Dim dK As bspKlasse
For Each dK In aKlasseArrayList
Console.WriteLine("dk.KapTitel = {0} dk.atPage = {1}", dK.KapTitel,
dK.atPage)
Next
Try
aKlasseArrayList.Sort()
Catch ex As Exception
MsgBox(ex.Message, , ex.Source)
End Try
Console.WriteLine("sorted")
For Each dK In aKlasseArrayList
Console.WriteLine("dk.KapTitel = {0} dk.atPage = {1}", dK.KapTitel,
dK.atPage)
Next
Dim tk As New bspKlasse
tk.atPage = 5
Dim inArrayAt As Integer
If aKlasseArrayList.Contains(tk) Then
inArrayAt = aKlasseArrayList.IndexOf(tk)
Console.WriteLine(inArrayAt.ToString)
End If
inArrayAt = aKlasseArrayList.IndexOf(tk)
Console.WriteLine(inArrayAt.ToString)
End Sub