022IEnumerator和IEnumerable接口

本文介绍了.NET中的IEnumerator和IEnumerable接口,这两个接口用于实现对非泛型集合的迭代。IEnumerator接口包含属性和方法,用于遍历集合,而IEnumerable接口提供了一个方法,使外部可以枚举集合的元素。
摘要由CSDN通过智能技术生成

集合实现了两个接口:IEnumerator和Ienumerable接口。

IEnumerator 接口

https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.ienumerator?view=netcore-3.1
支持对非泛型集合的简单迭代。

属性

 
Current

获取集合中位于枚举数当前位置的元素。

方法

 
MoveNext()

将枚举器前移到集合的下一个元素。

Reset()

将枚举器设置为其初始位置(在集合中第一个元素之前)。

IEnumerable 接口

https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.ienumerable?view=netcore-3.1

公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。

方法

 
GetEnumerator()

返回循环访问集合的枚举器。

Imports System
Imports System.Collections
'实现一个枚举器访问集合的元素

'类
Public Class Customer
    Public strName As String
    Public Sub New(ByVal name As String)
        Me.strName = name
    End Sub
End Class
类数组
Public Class Customers
    Implements IEnumerable
    Private _Customers() As Customer
    Public Sub New(ByVal array() As Customer)
        _Customers = New Customer(array.Length - 1) {}
        For i As Integer = 0 To array.Length - 1
            _Customers(i) = array(i)
        Next
    End Sub
    '实现IEnumerable的方法,返回枚举数
    Public Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
        Return New CustomerEnum(_Customers)
    End Function
End Class
'枚举器
Public Class CustomerEnum
    Implements IEnumerator
    Public _Customers() As Customer
    Dim position As Integer = -1
    Public Sub New(ByVal list() As Customer)
        _Customers = list
    End Sub

    '实现IEnumerator的方法1
    Public ReadOnly Property Current As Object Implements System.Collections.IEnumerator.Current
        Get
            Try
                Return _Customers(position)
            Catch ex As Exception
                Throw New InvalidOperationException
            End Try
        End Get
    End Property
    '实现IEnumerator的方法2
    Public Function MoveNext() As Boolean Implements System.Collections.IEnumerator.MoveNext
        position = position + 1
        Return position < _Customers.Length
    End Function
    '实现IEnumerator的方法3
    Public Sub Reset() Implements System.Collections.IEnumerator.Reset
        position = -1
    End Sub
End Class
Module Module1

    Sub Main()
        Dim CustomerArray() As Customer = {New Customer("李雷"), _
                                           New Customer("韩梅梅"), _
                                           New Customer("王芳")}
        Dim CustomerList As New Customers(CustomerArray)

        Dim cus As Customer
        For Each cus In CustomerList
            Console.WriteLine(cus.strName)
        Next

        Console.Read()
    End Sub

End Module


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值