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

23.11. Collections.ObjectModel.KeyedCollection Of TKey en TItem

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.

De namespace System.Collections.ObjectModel voorziet ons ook in een generieke template voor het creëren van typesafe dictionarytypes, namelijk KeyedCollection(Of TKey, TItem).
Dit dictionary type is geschikt voor elementen waarvan de key onderdeel is van de value.

Deze is een abstracte klasse (MustInherit), waarvan men dus niet rechtstreeks de members kan gebruiken, maar waarvan eerst een afgeleide wordt gemaakt.

Een concrete afgeleide klasse moet op zijn minst een implementatie voorzien voor de GetKeyForItem(item As TItem) As TKey) method (1).  Deze bepaald hoe de keywaarde van een item wordt opgehaald.
Door deze implementatie is het bijvoorbeeld niet meer noodzakelijk bij het toevoegen van een element (via de Add(item As TItem) method (2)) een keywaarde te voorzien, wat typisch zou zijn voor een dictionary type.
Visual Basic 2012 Broncode - Codevoorbeeld 606
Public Class Person
    Public Property Name As String
End Class
Public Class PersonsDictionary
    Inherits System.Collections.ObjectModel.KeyedCollection(Of String, Person)
    Protected Overrides Function GetKeyForItem(ByVal item As Person) As String
        GetKeyForItem = item.Name                                          ' (1)
    End Function
End Class
Public Class KeyedCollectionOfTKeyTItemExample
    Public Shared Sub Main()
        Dim person1 As New Person With {.Name = "John"}
        Dim person2 As New Person With {.Name = "Jane"}
        '
        Dim persons1 As New PersonsDictionary
        persons1.Add(person1)                                              ' (2)
        persons1.Add(person2)                                              ' (2)
        '
        Console.WriteLine(persons1.Item(0).Name)                           ' (3)
        Console.WriteLine(persons1.Item("John").Name)
        Console.WriteLine(persons1.Item(1).Name)                           ' (3)
        Console.WriteLine(persons1.Item("Jane").Name)
        '
        Console.ReadLine()
    End Sub
End Class
Console Application Output
John
John
Jane
Jane
Bemerk hoe het hier gaat over een dictionarycollectie waar de elementen ook via een index benaderbaar zijn (3).  Ook dit is niet bepaald typisch voor een dictionarytype, de abstractie van de klasse System.Collections.HashTable bijvoorbeeld staat dit niet toe.  Bij een System.Collections.SortedList is dit dan weer wel mogelijk.

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