Разница в реализации GetEnumerator() - C#
Формулировка задачи:
Объясните, плз, разницу в реализации GetEnumerator() в коде. Не могу понять почему так, а, к примеру, не наоборот.
Полный код под спойлером:
public IEnumerator<T> GetEnumerator() { return ((IEnumerable<T>) elements).GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return (this as IEnumerable<T>).GetEnumerator(); }
class UserCollection<T> : ICollection<T> { T[] elements = new T[0]; public void Add(T item) { var newArray = new T[elements.Length + 1]; elements.CopyTo(newArray, 0); newArray[newArray.Length - 1] = item; elements = newArray; } public void Clear() { elements = new T[0]; } public bool Contains(T item) { foreach (var element in elements) { if (element.Equals(item)) return true; } return false; } public void CopyTo(T[] array, int arrayIndex) { elements.CopyTo(array, arrayIndex); } public int Count { get { return elements.Length; } } public bool IsReadOnly { get { return false; } } public bool Remove(T item) { throw new NotImplementedException(); } public IEnumerator<T> GetEnumerator() { return ((IEnumerable<T>) elements).GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return (this as IEnumerable<T>).GetEnumerator(); }
Решение задачи: «Разница в реализации GetEnumerator()»
textual
Листинг программы
public class MyEnumerator { private bool move = false; public bool MoveNext() { return move = !move; } public int Current { get { return 15; } } } class Test { public MyEnumerator GetEnumerator() { return new MyEnumerator(); } } class Program { static void Main(string[] args) { var test = new Test(); foreach (var v in test) { Console.WriteLine(v); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д