using System; using System.Collections.Generic; class Test { public static int Counter = 0; public struct Nested : IDisposable { public int Current { get { return 1; } } public bool MoveNext () { return false; } public void Reset () { } void IDisposable.Dispose() { Counter++; } public void Dispose() { throw new ApplicationException ("error"); } } public Nested GetEnumerator () { return new Nested (); } } public static class Program { public static int Main () { Test t = new Test (); foreach (int i in t) { } if (Test.Counter != 1) return 1; return 0; } }