homelinksBlijf op de hoogte van de recente aanpassingen op vbvoorbeelden!
Visual Basic 2010 Voorbeelden

visual basic 2010 broncode voorbeelden

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

23.10. System.Collections.ObjectModel.Collection en ReadOnlyCollection

Print Email Deel op Facebook Deel op Twitter

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

De namespace System.Collections.ObjectModel voorziet ons in een aantal generieke klassen die dienen als templates voor strongly typed list en dictionary collectietypes.

23.10.1. System.Collections.ObjectModel.Collection(Of T)

Een generische instantie van Collection(Of T) is een typesafe list collectietype.
Visual Basic 2010 Broncode
Option Strict On
Option Explicit Off

Imports System.Collections.ObjectModel

Public Class Person
    Private m_Name As String
    Public Property Name() As String
        Get
            Name = m_Name
        End Get
        Set(ByVal value As String)
            m_Name = value
        End Set
    End Property
End Class
Public Class CollectionOfTExample
    Public Shared Sub Main()
        Dim persons1 As New Collection(Of Person)
        persons1.Add(New Person With {.Name = "John"})
        persons1.Add(New Person With {.Name = "Jane"})

        For Each element As Person In persons1
            Console.WriteLine(element.Name)
        Next
        '
        Console.ReadLine()
    End Sub
End Class
Console Application Output
John
Jane
Collection(Of T) is een typesafe variant van de CollectionBase klasse.  Een belangrijk verschil is dat de Collection(Of T) klasse, in tegenstelling tot de CollectionBase klasse, niet abstract ( MustInherit ) is.
Men is met andere woorden niet verplicht een afgeleide te maken van Collection(Of T), maar dit mag uiteraard wel.

List(Of T) heeft een uitgebreidere publieke interface in vergelijking met Collection(Of T), die dus over minder mogelijkheden beschikt.  Members als ConvertAll, Exists, Find*, RemoveAll, TrueForAll en ForEach die werken met delegate parameters als converters, predicates en actions, zijn beschikbaar in List(Of T) maar niet in Collection(Of T).

23.10.2. System.Collections.ObjectModel.ReadOnlyCollection(Of T)

Ook een readonly variatie op deze Collection(Of T) bestaat, namelijk ReadOnlyCollection(Of T).

De constructor van deze verwacht een collectie van de elementen, waarna ( na creatie van dit collectie object ) het niet meer de bedoeling is deze collectie te gaan wijzigen.
De collectie die de constructor verwacht moet van type IList(Of T) zijn, dit kan zoals in onderstaand voorbeeld gewoon een array van personen ( Person() zijn ).
Visual Basic 2010 Broncode
Imports System.Collections.ObjectModel

Public Class ReadOnlyCollectionOfTExample
    Public Shared Sub Main()
        Dim persons1 As Person() = New Person() _
                                        {New Person With {.Name = "John"}, _
                                         New Person With {.Name = "Jane"}}
        '
        Dim persons2 As New ReadOnlyCollection(Of Person)(persons1)
        For Each element As Person In persons2
            Console.WriteLine(element.Name)
        Next
        '
        Console.ReadLine()
    End Sub
End Class
Console Application Output
John
Jane
ReadOnlyCollection(Of T) is een typesafe variant van de ReadOnlyCollectionBase klasse.  Een belangrijk verschil is dat de ReadOnlyCollection(Of T) klasse, in tegenstelling tot de ReadOnlyCollectionBase klasse, niet abstract ( MustInherit ) is.
Men is met andere woorden niet verplicht een afgeleide te maken van ReadOnlyCollection(Of T), maar dit mag uiteraard wel.

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.