Java Iterator vs C # IEnumerable

I noticed that Java Iterator(interface) is similar to C # IEnumerable, but is there any way to use it like this:

private IEnumerable<Label> it; 
it = labels.iterator();

In Java, I could just do:

private Iterator<JLabel> it;
it = labels.iterator();

What is the C # equivalent of a Java interface Iterator?

+4
source share
1 answer

It is not used very often, but the analogy is the IEnumerator<T>interface:

var enumerator = labels.GetEnumerator();

.NET IEnumeratordiffers from Java in the Iteratorfollowing:

  • Iterator , ( , , hasNext false), IEnumerator collection ( MoveNext false)
  • Iterator hasNext, IEnumerator MoveNext
  • Iterator next, IEnumerator MoveNext
  • Iterator next , IEnumerator Current MoveNext
  • Iterator Java remove, . IEnumerator

, Java - :

it = labels.iterator();
while (it.hasNext())
{
    elem = it.next();
}

#:

en = labels.GetEnumerator();
while (en.MoveNext())
{
    elem = en.Current;
}

, labels ( IEnumerable<T>), :

foreach (var label in labels)
{
    //...
}

, , IEnumerable<T> ( ):

IEnumerable<Label> it = labels;

, IEnumerable<T> , Iterator Java.

( , it , ):

IEnumerable<Label> it = labels.ToArray();
// or Label[] it = labels.ToArray();
// or better: var it = labels.ToArray();
+8

All Articles