VB.Netのお勉強



IEnumerableを実装@VB.Net

IEnumerableを実装します。
IEnumerableインターフェースは、ArrayListなどで実装されています。

●IEnumeratorの実装
まず、最初にIEnumeratorを実装したクラスを作成します。
MoveNext、Current、Resetを実装する必要があります。

Stringの配列を保持し、配列の値を取得するクラスを作成します。

MoveNext
現在の位置を次の位置に移動させる処理を実装します。
移動が可能ならばTrue、不可能ならばFalseを返します。

Current
現在の位置の配列の値を返します。

Reset
位置を前に戻します。


Imports System.Collections

Public Class MyEnum : Implements IEnumerator

    Private item() As String
    Private count As Integer = -1

    Public Sub New(ByVal item() As String)
        Me.item = item
    End Sub

    Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext
        count = count + 1
        Return (count < item.Length)
    End Function

    Public ReadOnly Property Current() As Object Implements IEnumerator.Current
        Get
            Return item(count)
        End Get
    End Property

    Public Sub Reset() Implements IEnumerator.Reset
        count = count - 1
    End Sub
End Class


●IEnumerableの実装
次に、IEnumerableを実装したクラスを作成します。
GetEnumeratorを実装する必要があります。

Stringの配列を元に、IEnumeratorを実装したクラスを生成し、
GetEnumeratorにて、生成したオブジェクトを返します。


Imports System.Collections

Public Class MyCollection : Implements IEnumerable

Private myEnum As MyEnum

Public Sub New(ByVal item() As String)
myEnum = New MyEnum(item)
End Sub

Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
Return myEnum
End Function
End Class


●呼び出し
IEnumerableを実装したクラスを生成します。

生成する為に、配列を作成します。
配列を元に、クラスを生成しまs。

生成したオブジェクトをFor Eachでループし、
データを取り出します。


Dim myCollection As MyCollection
Dim item() As String = New String() { _
            "A", "B", "C", "D", "E"}

'IEnumerableを実装したクラスを生成
myCollection = New MyCollection(item)

Dim str As String
For Each str In myCollection
    Console.WriteLine(str)
Next




Copyright (C) 2008-2011 VB.Netのお勉強. All Rights Reserved.