Wie implementiere ich IEnumerable <T>

Ich weiß, wie man den nicht generischen IEnumerable wie folgt implementiert:

using System;
using System.Collections;

namespace ConsoleApplication33
{
    class Program
    {
        static void Main(string[] args)
        {
            MyObjects myObjects = new MyObjects();
            myObjects[0] = new MyObject() { Foo = "Hello", Bar = 1 };
            myObjects[1] = new MyObject() { Foo = "World", Bar = 2 };

            foreach (MyObject x in myObjects)
            {
                Console.WriteLine(x.Foo);
                Console.WriteLine(x.Bar);
            }

            Console.ReadLine();
        }
    }

    class MyObject
    {
        public string Foo { get; set; }
        public int Bar { get; set; }
    }

    class MyObjects : IEnumerable
    {
        ArrayList mylist = new ArrayList();

        public MyObject this[int index]
        {
            get { return (MyObject)mylist[index]; }
            set { mylist.Insert(index, value); }
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return mylist.GetEnumerator();
        }
    }
}

Allerdings stelle ich auch fest, dass IEnumerable eine generische Version hat,IEnumerable<T>, aber ich kann nicht herausfinden, wie ich es implementieren soll.

Wenn ich hinzufügeusing System.Collections.Generic; zu meinen using Direktiven, und ändern Sie dann:

class MyObjects : IEnumerable

zu:

class MyObjects : IEnumerable<MyObject>

Und dann mit der rechten Maustaste aufIEnumerable<MyObject> und wählen SieImplement Interface => Implement Interface, Visual Studio fügt den folgenden Codeblock hilfreich hinzu:

IEnumerator<MyObject> IEnumerable<MyObject>.GetEnumerator()
{
    throw new NotImplementedException();
}

Zurückgeben des nicht generischen IEnumerable-Objekts von derGetEnumerator(); Methode funktioniert diesmal nicht. Was soll ich hier setzen? Die CLI ignoriert jetzt die nicht generische Implementierung und sucht direkt nach der generischen Version, wenn sie während der foreach-Schleife versucht, mein Array zu durchlaufen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage