VB.NET IEnumerator接口操作代碼解讀
VB.NET從出現(xiàn)到今天已經(jīng)經(jīng)過了一段比較長的過渡期,而且這項(xiàng)技術(shù)語言正在穩(wěn)步健康的向前發(fā)展,為開發(fā)人員不斷的提供新的功能。在面向?qū)ο蟮脑O(shè)計(jì)中,經(jīng)常會(huì)用到有類似父子關(guān)系的這個(gè)對象,比如在我現(xiàn)在的一個(gè)項(xiàng)目中,有訂單對象,在一個(gè)訂單下又包含多個(gè)產(chǎn)品,這時(shí)我就想用 Iterator模式來封裝訂單下的產(chǎn)品,VB.NET IEnumerator接口就是用來實(shí)現(xiàn)迭代的,來支持VB.NET中的for each的操作。#t#
要想實(shí)現(xiàn)VB.NET IEnumerator接口,需在實(shí)現(xiàn)以下幾個(gè)函數(shù)來支持這一操作
- Overridable ReadOnly 
Property Current() As Object 
Current用于在迭代過程中得到當(dāng)前的對象
- Public Overridable 
Function MoveNext()
As Boolean 
MoveNext用于在迭代過程中將迭代指針指向下一個(gè)對象,初始是迭代指針指向集合的開始(在***個(gè)節(jié)點(diǎn)之前的位置),一旦越過集合的結(jié)尾,在調(diào)用 Reset 之前,對 MoveNext 的后續(xù)調(diào)用返回 false。
- Overridable 
Sub Reset() 
將枚舉數(shù)設(shè)置為其初始位置,該位置位于集合中***個(gè)元素之前。
只要集合保持不變,枚舉數(shù)就將保持有效。如果對集合進(jìn)行了更改(例如添加、修改或刪除元素),則該枚舉數(shù)將失效且不可恢復(fù),并且下一次對 MoveNext 或 Reset 的調(diào)用將引發(fā)InvalidOperationException。
下面是一個(gè)具體的VB.NET IEnumerator接口的對像
- Imports System.Collections
 - '在此實(shí)際實(shí)現(xiàn)的是System.Collections.
 
IEnumerable接口,- IteratorProduct 用此接口來向使用者
 
提供對VB.NET IEnumerator接口的操作。- Public Class IteratorProduct :
 
Implements System.Collections.
IEnumerable- Private Products As Collection
 
'用Collection在存訂單中的所有產(chǎn)品- Private item As Integer = -1
 - Public Sub New()
 - Products = New Collection
 - Products.Add("xh") '這只是為了
 
測試方便,將加入產(chǎn)品的內(nèi)容直接寫在這了- Products.Add("lj")
 - Products.Add("qd")
 - End Sub
 - Overridable ReadOnly Property
 
Current() As Object- Get
 - Return Products(item)
 - End Get
 - End Property
 - Public Overridable Function
 
MoveNext() As Boolean- item += 1
 - End Function
 - Overridable Sub Reset()
 - item = -1
 - End Sub
 - '返回迭代對像給使用者
 - Overridable Function GetEnumerator()
 - As IEnumerator Implements
 
IEnumerable.GetEnumerator- Return Me.Products.GetEnumerator
 - End Function
 - End Class
 
VB.NET IEnumerator接口的相關(guān)代碼示例就為大家介紹到這里。















 
 
 
 
 
 
 