Реализация 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()
{
    //...
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы