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