|
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 OnOption Explicit OffImports 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 PropertyEnd ClassPublic 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 SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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). boven
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 SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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.
|