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.5. List Collecties en de IList Interface

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.

Over de elementen van een ICollection kunnen we itereren, een ICollection is immers ook IEnumerable.  Dit biedt ons de mogelijk om de elementen van deze collectie aan te spreken.

Het is echter niet mogelijk om één bepaald elementen uit de verzameling te adresseren, toch niet aan de hand van de in ICollection voorziene members.
Types Queue en Stack bijvoorbeeld voegen members als Dequeue, Pop en Peek toe om toch een bepaald element uit de collectie te halen.  Dit zijn dan wel specifieke elementen.  Bij Queue die zich gedraagd via het FIFO (First In First Out) principe zal dit het eerst toegevoegde element zijn.  Bij Stack die zich gedraagd via het LIFO (Last In First Out) principe zal dit het laatst toegevoegde element zijn.
Voor de meeste collecties is dit echter niet voldoende, vaak is het zo dat men de mogelijkheid wenst eender welk element uit de verzameling te adresseren, en dus niet alleen het eerste of het laatste element, maar elk element op eender welke positie.

Hiervoor is IList interface voorzien, deze ziet er ongeveer zo uit :
Public Interface IList : Inherits ICollection
    Function Add(ByVal value As Object) As Integer
    Sub Clear()
    Function Contains(ByVal value As Object) As Boolean
    Function IndexOf(ByVal value As Object) As Integer
    Default Property Item(ByVal index As Integer) As Object
    Sub Insert(ByVal index As Integer, ByVal value As Object)
    ReadOnly Property IsFixedSize As Boolean
    ReadOnly Property IsReadOnly() As Boolean
    Sub Remove(ByVal value As Object)
    Sub RemoveAt(ByVal index As Integer)
End Interface

22.5.1. Abstractie en Publieke Interface van List Collecties

Bemerk dat dit een meer realistisch interface is voor collecties.  Nu is er bijvoorbeeld ook de mogelijkheid voorzien elementen toe te voegen ( Add en Insert), op te zoeken (Contains en IndexOf) en te verwijderen (Remove, RemoveAt en Clear).

Een collectietype die deze interface implementeert noemt ook wel een "list" of een "lijst".  Hierin staan de elementen in een bepaald volgorde, en kan men op basis van de kennis over deze volgorde, een element op een bepaalde positie (index) aanspreken (Item).
Elementen mogen ook meermaals voorkomen in de verzameling, ze hoeven dus niet uniek te zijn.

Typisch voor list collecties is de mogelijkheid om een element in te voegen op een bepaalde positie (Insert), een element op een bepaalde positie te verwijderen (RemoveAt) en de positie van een bepaald element op te vragen (IndexOf).

Members als IndexOf, Remove en Contains die op zoek gaan naar elementen uit de verzameling maken gebruik van logische gelijkheid (de Equals implementatie) om de elementen van de collectie met de parameter te vergelijken.

De returnwaardes van IsFixedSize en IsReadOnly kunnen respectievelijk aangeven of men elementen kan toevoegen, invoegen of verwijderen en elementen kan aanpassen.
Het spreekt voor zich dat dit moet corresponderen met de mogelijkheden die de Add, Insert, Remove, RemoveAt, Clear en Item members ons bieden.

De IList interface erft over van de ICollection interface, logisch gezien een list immers een collectie is, waar het bijvoorbeeld ook nuttig van is om het aantal elementen van te kunnen opvragen.

Ondermeer volgende members worden van ICollection overgeërfd :
    Sub CopyTo(ByVal array As Array, ByVal index As Integer)
    ReadOnly Property Count() As Integer
Gezien IList ook ICollection is en ICollection IEnumerable is, is het dus ook mogelijk over de elementen van dergelijke IList te enumereren.

Van IEnumerable (via ICollection) wordt volgende member overgeërd :
    Function GetEnumerator() As IEnumerator

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