|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
23.6.1. System.Collections.Generic.ICollection(Of T)Naast de basisinterface voor collecties System.Collections.ICollection, die er ongeveer zo uitziet : Public Interface ICollection : Inherits IEnumerable Sub CopyTo(ByVal array As Array, ByVal index As Integer) ReadOnly Property Count() As Integer End Interface Bestaat er ook een strongly typed variant, namelijk System.Collections.Generic.ICollection(Of T), die als volgt is gedefinieerd : Public Interface ICollection(Of T) : Inherits IEnumerable(Of T), IEnumerable Sub Add(ByVal item As T) Sub Clear() Function Contains(ByVal item As T) As Boolean Sub CopyTo(ByVal array As T(), ByVal arrayIndex As Integer) ReadOnly Property Count() As Integer ReadOnly Property IsReadOnly() As Boolean Function Remove(ByVal item As T) As Boolean End Interface ICollection definieerde niet veel meer meer dan een enumereerbare ( IEnumerable ) collectie waarvan men het aantal elementen kan opvregen ( Count ).
De ICollection(Of T) interface daarintegen is meer uitgebreid, ook methods als Add, Remove, Clear en Contains zijn voorzien. Wat opzich logischer is voor een basisinterface voor collecties, de meeste collecties zullen inderdaad mogelijk maken om elementen toe te voegen en te verwijderen. boven
23.6.2. System.Collections.Generic.IEnumerable(Of T)Bemerk dat ICollection(Of T) naast de IEnumerable interface ook de IEnumerable(Of T) interface overerft. Ter herinnering deze interfaces zien er zo uit : Public Interface IEnumerable Function GetEnumerator() As IEnumerator End Interface
Public Interface IEnumerable(Of T) : Inherits IEnumerable Shadows Function GetEnumerator() As IEnumerator(Of T) End Interface Een type dat ICollection(Of T) implementeert moet dus ook een implementatie voorzien voor GetEnumerator() As IEnumerator(Of T), wat wil zeggen dat we er een strongly typed enumerator moeten in opleveren. Public Interface IEnumerator Function MoveNext() As Boolean ReadOnly Property Current() As Object Sub Reset() End Interface
Public Interface IEnumerator(Of T) : Inherits IDisposable, IEnumerator ReadOnly Property Current() As T End Interface Current levert in IEnumerator(Of T) geen Object maar wel een T op : Visual Basic 2010 Broncode Option Strict OnImports System.Collections Imports System.Collections.Generic Namespace ICollectionOfTExample Public Class Client Public Shared Sub Main() Dim array1 As Integer() = New Integer() {1, 2, 3} Dim enumerable1 As IEnumerable( Of Integer) = array1 Dim enumerator1 As IEnumerator( Of Integer) = _ enumerable1.GetEnumerator() enumerator1.MoveNext() Dim integer1 As Integer = enumerator1.Current Console.WriteLine(integer1) Console.ReadLine() End Sub End ClassEnd NamespaceDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output 1
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|