HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Saját kollekció készítése


Példaprogram letöltése

6100 bájt

Mostani példánkban egy olyan új osztályt készítünk, melybe tetszőleges típusú és számú elemet tárolhatunk. Az osztályunkat úgy készítjük, hogy annak elemein, akár egy foreach ciklussal is végig lehessen menni.

A feladat megvalósításához az osztályunkat az IEnumerable és IEnumerator interfészekből kell származtatnunk.
Public Class MyList
  Implements IEnumerator
Létrehozunk benne egy változót, mely az aktuális elemet mutatja majd, valamint egy tömböt, mely az elemeinket tárolja. Az egyszerűség kedvéért most egy fix elemszámú és előre feltöltött listát készítünk.
  Private iPos As Integer = -1
  Private items As String() = {"Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"}
Most már csak a két interfész függvényeit kell implementálnunk. A GetEnumerator függvényben kell visszaadnunk a saját osztályunk példányát IEnumerator interfész típusban.
  Public Function GetEnumerator() As IEnumerator
    Return CType(Me, IEnumerator)
  End Function 'GetEnumerator
A MoveNext függvénynek lesz az a feladata, hogy következő elemre álljon a listánkban. Itt nyilván ellenőriznünk kell, hogy nem értünk-e még a lista végére. Ha nem, akkor növelhetjük az iPos változónk értékét. A függvény visszatérési értéke igaz kell hogy legyen, ha még nem értünk a lista végére és hamis, ha már igen.
  Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext
    If iPos < items.Length - 1 Then
      iPos += 1
      Return True
    Else
      Return False
    End If
  End Function 'MoveNext
Szükséges még a Reset függvény felhasználása is, melynek az a funkciója, hogy alaphelyzetbe állítja a listát. Jelen esetben ez most csak az iPos változónkat érinti.
  Public Sub Reset() Implements IEnumerator.Reset
    iPos = -1
  End Sub 'Reset
A Current nevű property szolgáltatja mindig az aktuális elemet object típusban. Az aktuális elem sorszámát az iPos tárolja, így egyszerűen csak vissza kell adnunk a tömbnek ezt az elemét.
  Public ReadOnly Property Current() As Object Implements IEnumerator.Current
    Get
      Return items(iPos)
    End Get
  End Property
End Class 'MyList
Ezzel az osztályunk el is készült, most nézzük a felhasználási módját: először is létrehozunk belőle egy példányt, majd ezt követően egy foreach ciklussal végigmehetünk az elemein, melyet szabadon felhasználhatunk.
  Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
    Dim ml As New MyList()
    Dim s As String
    For Each s In ml
      listBox1.Items.Add(s)
    Next s
  End Sub 'button1_Click

Cikksorozat



Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |