Equals metode i en info klasse ?
Dette er en fortsættelse af denne tråd : http://www.eksperten.dk/spm/691911Imports System
Imports System.Collections
Namespace E
Public Class Foobar
Private iv As Integer
Private sv As String
Public Sub New()
MyClass.New(0, "")
End Sub
Public Sub New(ByVal iv As Integer)
MyClass.New(iv, "")
End Sub
Public Sub New(ByVal iv As Integer, ByVal sv As String)
Me.iv = iv
Me.sv = sv
End Sub
Public Overloads Overrides Function ToString() As String
Return ("[" & iv & "," & sv & "]")
End Function
Public Overloads Overrides Function Equals(ByVal o As Object) As Boolean
Return (iv = CType(o, Foobar).iv)
End Function
Public Overloads Overrides Function GetHashCode() As Integer
Return iv.GetHashCode
End Function
End Class
Class MainClass
Public Shared Sub Main(ByVal args As String())
Dim lst As ArrayList = New ArrayList
lst.Add(New Foobar(1, "A"))
lst.Add(New Foobar(2, "BB"))
lst.Add(New Foobar(3, "CCC"))
Dim ix As Integer = lst.IndexOf(New Foobar(2))
If ix >= 0 Then
Console.WriteLine(lst(ix))
Else
Console.WriteLine("Not found")
End If
End Sub
End Class
End Namespace
Det første i koden Fields og Default constructors er der ikke problemer med at forstå. Derimod er jeg lidt i tvivl om brugen af metoden ToString da jeg læste en artikel om dette hvor de bla. skriver følgende :
"Men hvad bruger man så egentlig ToString-funktionen til? Og hvad er det, der gør den misforstået? Brugen af ToString-funktionen bør generelt begrænse sig til udviklings-orienterede situationer, hvor man til brug for debugning ønsker at få en tekstuel repræsentation af et objekts data. Desværre ser man ofte eksempler på at forretningsklasser overskriver ToString-funktionen til brug i forbindelse med brugergrænseflader. Et eksempel på en pæn flerlags-arkitektur er dette langt fra."
hele artiklen kan læses her :
http://www.captator.dk/captator.aspx?article=116
Selve Equals metoden :
Public Overloads Overrides Function Equals(ByVal o As Object) As Boolean
Return (iv = CType(o, Foobar).iv)
End Function
Den kunne jeg godt bruge en forklaring til :
1. Hvad går den ?
2. I dette til fælde retuneres som jeg forstår det iv, hvis så jeg skal søge igennem mit array hvor jeg f.eks ville lede efter et navn skal jeg så have en Equals metode mere ?
Metoden GetHashCode :
Public Overloads Overrides Function GetHashCode() As Integer
Return iv.GetHashCode
End Function
1. Hvad gør den ?
Ellers er resten lige ud af landevejen :o)
/Websam
