熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

深入概括VB.NET實現IEnumerator接口

2022-06-13   來源: .NET編程 

  VBNET經過長時間的發展很多用戶都很了解VBNET實現IEnumerator接口了這裡我發表一下個人理解和大家討論討論在面向對象的設計中經常會用到有類似父子關系的這個對象比如在我現在的一個項目中有訂單對象在一個訂單下又包含多個產品這時我就想用 Iterator模式來封裝訂單下的產品在dot Net中的IEnumerator接口就是用來實現迭代的來支持dot Net中的for each的操作

  要VBNET實現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

  下需是一個具體的VBNET實現IEnumerator接口的對像

  
Imports SystemCollections   
 
在此實際實現的是SystemCollectionsIEnumerable接口
IteratorProduct 用此接口來向使用者提供對IEnumerator接口的操作   
 
Public Class IteratorProduct : Implements SystemCollectionsIEnumerable   
Private Products As Collection 用Collection在存訂單中的所有產品   
Private item As Integer =    
 
Public Sub New()   
Products = New Collection   
ProductsAdd(xh這只是為了測試方便將加入產品的內容直接寫在這了   
ProductsAdd(lj)   
ProductsAdd(qd)   
End Sub   
 
Overridable ReadOnly Property Current() As Object   
Get   
Return Products(item)   
End Get   
End Property   
 
Public Overridable Function MoveNext() As Boolean   
item +=    
End Function   
 
Overridable Sub Reset()   
item =    
End Sub   
 
返回迭代對像給使用者   
 
Overridable Function GetEnumerator() 
As IEnumerator Implements IEnumerableGetEnumerator   
Return MeProductsGetEnumerator   
End Function   
 
End Class 


From:http://tw.wingwit.com/Article/program/net/201311/12284.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.