David Božjak David Božjak - 1 year ago 117
C# Question

Return an empty IEnumerator

I have an interface that, among other things, implements a "public IEnumerator GetEnumerator()" method, so I can use the interface in a foreach statement.

I implement this interface in several classes and in one of them, I want to return an empty IEnumerator. Right now I do this the following way:

public IEnumerator GetEnumerator()
ArrayList arr = new ArrayList();
return arr.GetEnumerator();

However I consider this an ugly hack, and I can't help but think that there is a better way of returning an empty IEnumerator. Is there?

Answer Source

This is simple in C# 2:

public IEnumerator GetEnumerator()
    yield break;

You need the yield break statement to force the compiler to treat it as an iterator block.

This will be less efficient than a "custom" empty iterator, but it's simpler code...

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download