2009-10-17 39 views
9

Tôi đang tự chuyển đổi Java C# và là những gì có đoạn mã sau:C# tương đương với Iterator trong Java

for (Iterator<SGroup> theSGroupIterator = SGroup.getSGroupIterator(); 
    theSGroupIterator.hasNext();) 
{ 
    SGroup nextSGroup = theSGroupIterator.next(); 
} 

Có tương đương của Iterator<T> trong C# hoặc là có một C# ngữ tốt hơn?

Trả lời

16

Tương đương trực tiếp trong C# sẽ là IEnumerator<T> và mã sẽ trông giống như sau:

SGroup nextSGroup; 
using(IEnumerator<SGroup> enumerator = SGroup.GetSGroupEnumerator()) 
{ 
    while(enumerator.MoveNext()) 
    { 
     nextSGroup = enumerator.Current; 
    } 
} 

Tuy nhiên, cách thành ngữ sẽ là:

foreach(SGroup group in SGroup.GetSGroupIterator()) 
{ 
    ... 
} 

và có GetSGroupIterator trở lại một IEnumerable<T> (và có lẽ đổi tên nó để GetSGroups() hoặc tương tự).

3

Trong .NET nói chung, bạn sẽ sử dụng giao diện IEnumerable<T>. Điều này sẽ trả lại một IEnumerator<T> mà bạn có thể gọi phương thức MoveNext và thuộc tính hiện tại để lặp qua chuỗi.

Trong C#, từ khóa foreach thực hiện tất cả điều này cho bạn. Ví dụ về cách sử dụng foreach có thể được tìm thấy ở đây:

http://msdn.microsoft.com/en-us/library/ttw7t8t6(VS.80).aspx

0

Vâng, trong C#, nó được gọi là một Enumerator.

Các vấn đề liên quan