Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

22.15. Hashtable Item, Contains(Key) en ContainsValue

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Methods Add en Remove van de Hashtable klasse gebruikt GetHashCode om te weten waar een element (in welke bucket) te plaatsen of verwijderen, en eventueel Equals om na te gaan of verschillende key objecten in die bucket met dezelfde hash code wel logisch verschillend of gelijk zijn van of aan elkaar.

Methods Contains, ContainsKey en Item gebruiken ook GetHashCode om te zien in welke bucket het element zich zou moeten vinden, en vervolgens Equals om te zien of het element logisch gelijk is aan de parameter.

De ContainsValue  method baseren zich uiteraard op de Equals implementatie van de values van de elementen :
Visual Basic 2012 Broncode - Codevoorbeeld 559
Namespace HashtableUsesEqualsExample
    Class SomeKey
        Public Value As Integer
        Public Overrides Function Equals(ByVal obj As Object) As Boolean
            If obj IsNot Nothing AndAlso TypeOf obj Is SomeKey Then
                Equals = (Me.Value = DirectCast(obj, SomeKey).Value)
            End If
        End Function
        Public Overrides Function GetHashCode() As Integer
            GetHashCode = Value
        End Function
    End Class
    Class SomeValue
        Public Value As Integer
        Public Overrides Function Equals(ByVal obj As Object) As Boolean
            If obj IsNot Nothing AndAlso TypeOf obj Is SomeValue Then
                Equals = (Me.Value = DirectCast(obj, SomeValue).Value)
            End If
        End Function
        Public Overrides Function GetHashCode() As Integer
            GetHashCode = Value
        End Function
        Public Name As String
        Public Overrides Function ToString() As String
            ToString = Name
        End Function
    End Class
    Class Client
        Public Shared Sub Main()
            Dim key1 As New SomeKey With {.Value = 1}
            Dim key2 As New SomeKey With {.Value = 2}
            Dim key3 As New SomeKey With {.Value = 1}
            '
            Dim value1 As New SomeValue With {.Value = 1, .Name = "value1"}
            Dim value2 As New SomeValue With {.Value = 1, .Name = "value2"}
            Dim value3 As New SomeValue With {.Value = 3, .Name = "value3"}
            '
            Dim hashtable1 As New Hashtable
            '
            hashtable1.Add(key1, value1)
            '
            Console.WriteLine(hashtable1.Contains(key1))        ' True
            Console.WriteLine(hashtable1.Contains(key2))        ' False
            Console.WriteLine(hashtable1.Contains(key3))        ' True
            Console.WriteLine()
            '
            Console.WriteLine(hashtable1.ContainsKey(key1))     ' True
            Console.WriteLine(hashtable1.ContainsKey(key2))     ' False
            Console.WriteLine(hashtable1.ContainsKey(key3))     ' True
            Console.WriteLine()
            '
            Console.WriteLine(hashtable1.ContainsValue(value1)) ' True
            Console.WriteLine(hashtable1.ContainsValue(value2)) ' True
            Console.WriteLine(hashtable1.ContainsValue(value3)) ' False
            Console.WriteLine()
            '
            Console.WriteLine(hashtable1.Item(key1).ToString()) ' value1
            Console.WriteLine(hashtable1.Item(key2) Is Nothing) ' True
            Console.WriteLine(hashtable1.Item(key3).ToString()) ' value1    (1)
            Console.WriteLine()
            '
            Console.WriteLine(hashtable1.Count)                 ' 1
            '
            hashtable1.Remove(key3)                                       ' (2)
            '
            Console.WriteLine(hashtable1.ContainsKey(key1))     ' False
            Console.WriteLine(hashtable1.Count)                 ' 0
            ''
            Console.ReadLine()
        End Sub
    End Class
End Namespace
Console Application Output
True
False
True

True
False
True

True
True
False

value1
True
value1

1
False
0

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.