Реализация 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()
- {
- //...
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д