详细讲述VB.NET IEnumerator接口

开发 后端
这里介绍要实现VB.NET IEnumerator接口,需在实现以下几个函数来支持VB.NET IEnumerator接口的操作,一个具体的实现VB.NET IEnumerator接口的对像。

经过长时间学习VB.NET IEnumerator接口,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。在面向对象的设计中,经常会用到有类似父子关系的这个对象,比如在我现在的一个项目中,有订单对象,在一个订单下又包含多个产品,这时我就想用Iterator模式来封装订单下的产品,在dot Net中的IEnumerator接口就是用来实现迭代的,来支持dot Net中的for each的操作。

要实现VB.NET IEnumerator接口,需在实现以下几个函数来支持VB.NET IEnumerator接口的操作

  1. Overridable ReadOnly Property Current() As Object  
  2. 'Current用于在迭代过程中得到当前的对象  
  3. Public Overridable Function MoveNext() As Boolean 

MoveNext用于在迭代过程中将迭代指针指向下一个对象,初始是迭代指针指向集合的开始(在第一个节点之前的位置),一旦越过集合的结尾,在调用 Reset 之前,对 MoveNext 的后续调用返回 false。

  1. Overridable Sub Reset() 

#t#将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。

只要集合保持不变,枚举数就将保持有效。如果对集合进行了更改(例如添加、修改或删除元素),则该枚举数将失效且不可恢复,并且下一次对 MoveNext 或 Reset 的调用将引发 InvalidOperationException。

下面是一个具体的实现VB.NET IEnumerator接口的对像

  1. Imports System.Collections  
  2.  
  3. '在此实际实现的是System.Collections.IEnumerable接口,
    IteratorProduct 用此接口来向使用者提供对IEnumerator接口的操作。  
  4.  
  5. Public Class IteratorProduct : Implements System.Collections.IEnumerable  
  6. Private Products As Collection '用Collection在存订单中的所有产品  
  7. Private item As Integer = -1  
  8.  
  9. Public Sub New()  
  10. Products = New Collection  
  11. Products.Add("xh") '这只是为了测试方便,将加入产品的内容直接写在这了  
  12. Products.Add("lj")  
  13. Products.Add("qd")  
  14. End Sub  
  15.  
  16. Overridable ReadOnly Property Current() As Object  
  17. Get  
  18. Return Products(item)  
  19. End Get  
  20. End Property  
  21.  
  22. Public Overridable Function MoveNext() As Boolean  
  23. item += 1  
  24. End Function  
  25.  
  26. Overridable Sub Reset()  
  27. item = -1  
  28. End Sub  
  29.  
  30. '返回迭代对像给使用者  
  31.  
  32. Overridable Function GetEnumerator() 
    As IEnumerator Implements IEnumerable.GetEnumerator  
  33. Return Me.Products.GetEnumerator  
  34. End Function  
  35.  
  36. End Class  
  37.  
  38. Private Sub Page_Load(ByVal sender As System.Object, 
    ByVal e As System.EventArgs) Handles MyBase.Load  
  39. Dim Products As IteratorProduct  
  40. Products = New IteratorProduct  
  41. Dim ProductName As String  
  42. For Each ProductName In Products  
  43. Response.Write(ProductName)  
  44. Response.Write("<br>")  
  45. Next  
  46. End Sub 
责任编辑:佚名 来源: IT168
相关推荐

2010-01-14 09:55:06

VB.NET IEnu

2009-10-29 16:23:42

VB.NET实现IEn

2009-10-13 17:03:55

VB.NET面向对象

2009-10-10 16:44:52

VB.NET开发控件

2009-10-14 17:08:44

VB.NET使用Fil

2009-10-16 13:26:53

VB.NET Exce

2009-10-21 10:45:50

VB.NET Quic

2009-10-12 16:39:59

OracleTransVB.NET使用

2009-10-19 08:55:22

VB.NET多重继承

2009-10-16 09:35:24

VB.NET制作透明窗

2009-10-23 13:22:25

VB.NET实现拖动图

2009-10-15 16:39:00

VB.NET读取INI

2009-10-15 11:11:08

VB.NET Text

2009-10-14 11:15:06

VB.NET Grou

2009-10-27 11:39:03

VB.NET事件处理程

2009-10-26 18:11:47

VB.NET调用Exc

2009-10-21 18:28:48

VB.NET表间拖放

2009-10-29 09:57:16

VB.NET实现数据绑

2009-10-22 09:20:46

VB.NET Proc

2009-10-28 09:55:29

VB.NET MyCl
点赞
收藏

51CTO技术栈公众号