转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB.NET中实现IEnumerator接口         ★★★★

VB.NET中实现IEnumerator接口

作者:闵涛 文章来源:闵涛的学习笔记 点击数:790 更新时间:2009/4/23 19:00:32

VB.NET中实现IEnumerator接口
在面向对象的设计中,经常会用到有类似父子关系的这个对象,比如在我现在的一个项目中,有订单对象,在一个订单下又包含多个产品,这时我就想用Iterator模式来封装订单下的产品,在dot Net中的IEnumerator接口就是用来实现迭代的,来支持dot Net中的for each的操作。

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

Overridable ReadOnly Property Current() As Object

Current用于在迭代过程中得到当前的对象


 Public Overridable Function MoveNext() As Boolean

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

 Overridable Sub Reset()
 将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。

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

下需是一个具体的实现IEnumerator接口的对像

''''------------------------实现IEnumerator接口的类----------------------------------

Imports System.Collections

''''在此实际实现的是System.Collections.IEnumerable接口,IteratorProduct 用此接口来向使用者提供对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

''''------------------------使用类----------------------------------

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Products As IteratorProduct
        Products = New IteratorProduct
        Dim ProductName As String
        For Each ProductName In Products
            Response.Write(ProductName)
            Response.Write("<br>")
        Next
    End Sub

输出为:

xh
lj
qd
说明实现成功


[VB.NET程序]在VB中实现PickList功能  [Delphi程序]用API函数在DELPHI中实现“非典型”窗体
[Delphi程序]在Delphi中实现StringTokenizer功能模块  [VB.NET程序]MCI播放器在VB中实现
[网页制作]DW中实现flash的透明背景  [网页制作]Dreamweaver中实现flash的透明背景
[Web开发]ASP.NET 中实现 MD5_HMAC(C#)  [Web开发]在ASP 中实现ASP.Net 的DataGrid 功能(转载)
[Web开发]在ASP.NET中实现MVC模式(五)  [Web开发]在ASP.NET中实现MVC模式(四)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台