Реализация GetEnumerator() - C#
Формулировка задачи:
Здравствуйте, помогите пожалуйста с решением задачи.
Имеется такой код:
Получаю ошибку на строке
class MyClass { int[] arr; public MyClass(int[] a) { arr = a; } public IEnumerator GetEnumerator() { foreach (var el in arr) yield return el; } } static void Main() { var data = new MyClass(new int[] { 1, 2, 3 }); var list = new List<int>(); foreach (var x in data) { list.Add(x); } }
list.Add(x);
:
ошибка CS1502: Наиболее подходящий перегруженный метод для "System.Collections.Generic.List<int>.Add(int)" имеет несколько недопустимых аргументов
ошибка CS1503: Аргумент "1": преобразование типа из "object" в "int" невозможно
Понятно, что нужен тип int, а не object для добавления в list.
И если сделать так: foreach (int x in data)
то будет работать.
Но мне нужно не менять этот вызывающий код, а изменить как-то метод GetEnumerator().
Подскажите: как это можно сделать? Решение задачи: «Реализация GetEnumerator()»
textual
Листинг программы
public IEnumerator<int> GetEnumerator() { //... }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д