Sé cómo implementar el IEnumerable no genérico, como esto:¿Cómo se implementa IEnumerable <T>
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();
}
}
}
Sin embargo también noto que IEnumerable tiene una versión genérica, IEnumerable<T>
, pero no puedo encontrar la manera para implementarlo.
Si añado using System.Collections.Generic;
a mis utilizando directivas y, a continuación, cambiar:
class MyObjects : IEnumerable
a:
class MyObjects : IEnumerable<MyObject>
Y a continuación, haga clic derecho en IEnumerable<MyObject>
y seleccione Implement Interface => Implement Interface
, Visual Studio amablemente añade el siguiente bloque del código:
IEnumerator<MyObject> IEnumerable<MyObject>.GetEnumerator()
{
throw new NotImplementedException();
}
Returni ng el objeto IEnumerable no genérico del método GetEnumerator();
no funciona esta vez, entonces ¿qué debo poner aquí? La CLI ahora ignora la implementación no genérica y se dirige directamente a la versión genérica cuando intenta enumerar a través de mi matriz durante el ciclo foreach.
Gracias
En la implementación no genérica, ¿hay alguna diferencia entre devolver 'this.GetEnumerator()' y simplemente devolver 'GetEnumerator()'? –
@TannerSwett No hay diferencia. –