private sealed class FooEnumerable :
IEnumerable<string>, IEnumerator<string>
public string Current { get; private set; }
object IEnumerator.Current
public FooEnumerable(int state)
public IEnumerator<string> GetEnumerator()
FooEnumerable fooEnumerable;
fooEnumerable = new FooEnumerable(0);
IEnumerator IEnumerable.GetEnumerator()
bool IEnumerator.MoveNext()
Console.WriteLine("Baz");
throw new NotSupportedException();
void IDisposable.Dispose()
IEnumerable<string> Foo()
return new FooEnumerable(-2);
var enumerator = Foo().GetEnumerator();
while (enumerator.MoveNext())
Console.Write(enumerator.Current);