// TODO : Needs additional pattern detection // CustomStructEnumerator does not implement IDisposable // No try-finally-Dispose is generated. //public void ForEachOnGenericCustomStructEnumerator<T>(CustomStructEnumerator<T> e) //{ // foreach (T item in e) { // Console.WriteLine(item); // } //} public void ForEachOnCustomClassEnumeratorWithIDisposable(CustomClassEnumeratorWithIDisposable e) { foreach (object item in e) { Console.WriteLine(item); } }
public void ForEachOnGenericCustomClassEnumeratorWithIDisposable <T>(CustomClassEnumeratorWithIDisposable <T> e) { foreach (T item in e) { Console.WriteLine(item); } }
public static T NoForeachCallWithSideEffect <T>(CustomClassEnumeratorWithIDisposable <T> items) { Console.WriteLine("NoForeachCallWithSideEffect:"); using (CustomClassEnumeratorWithIDisposable <T> enumerator = items.GetEnumerator()) { while (enumerator.MoveNext()) { T result = enumerator.Current; } return(CallWithSideEffect <T>()); } }