Sunday, 27 November 2016

c# - 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



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...



No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...