// based on https://h...content-available-to-author-only...r.ru/post/209914/
// for http://ru.stackoverflow.com/a/589005/178988
using System;
public class Container
{
public Enumerator GetEnumerator()
{
return new Enumerator();
}
}
public class Enumerator : IDisposable
{
public bool MoveNext()
{
return false;
}
public object Current
{
get { return null; }
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
public class Test
{
public static void Main()
{
var items = new Container();
var enumerator = items.GetEnumerator();
using (enumerator as IDisposable)
{
var exists = enumerator.MoveNext();
if (exists)
{
do
{
var item = enumerator.Current;
exists = enumerator.MoveNext();
Console.WriteLine(exists ? "{0}" : "{0} is the last one", item);
} while (exists);
}
}
Console.WriteLine("Done");
}
}
Ly8gYmFzZWQgb24gaHR0cHM6Ly9oLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLnJ1L3Bvc3QvMjA5OTE0LwovLyBmb3IgaHR0cDovL3J1LnN0YWNrb3ZlcmZsb3cuY29tL2EvNTg5MDA1LzE3ODk4OAoKdXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIENvbnRhaW5lcgp7CglwdWJsaWMgRW51bWVyYXRvciBHZXRFbnVtZXJhdG9yKCkKCXsKCQlyZXR1cm4gbmV3IEVudW1lcmF0b3IoKTsKCX0KfQoKcHVibGljIGNsYXNzIEVudW1lcmF0b3IgOiBJRGlzcG9zYWJsZQp7CglwdWJsaWMgYm9vbCBNb3ZlTmV4dCgpCgl7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCXB1YmxpYyBvYmplY3QgQ3VycmVudAoJewoJCWdldCB7IHJldHVybiBudWxsOyB9Cgl9CgoJcHVibGljIHZvaWQgRGlzcG9zZSgpCgl7CgkJQ29uc29sZS5Xcml0ZUxpbmUoIkRpc3Bvc2UiKTsKCX0KfQoKcHVibGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQogICAgewogICAgICAgIHZhciBpdGVtcyA9IG5ldyBDb250YWluZXIoKTsKCiAgICAgICAgdmFyIGVudW1lcmF0b3IgPSBpdGVtcy5HZXRFbnVtZXJhdG9yKCk7CgogICAgICAgIHVzaW5nIChlbnVtZXJhdG9yIGFzIElEaXNwb3NhYmxlKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGV4aXN0cyA9IGVudW1lcmF0b3IuTW92ZU5leHQoKTsKCiAgICAgICAgICAgIGlmIChleGlzdHMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBlbnVtZXJhdG9yLkN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgZXhpc3RzID0gZW51bWVyYXRvci5Nb3ZlTmV4dCgpOwoKICAgICAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShleGlzdHMgPyAiezB9IiA6ICJ7MH0gaXMgdGhlIGxhc3Qgb25lIiwgaXRlbSk7CiAgICAgICAgICAgICAgICB9IHdoaWxlIChleGlzdHMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJEb25lIik7CiAgICB9Cn0=