Respuesta: Los objetos que foreach puede recorrer deben ser objetos de colección o de array, que son del tipo que implementa el IEnumerator de superinterfaz o el método declarado GetEnumerator Q: Pero cuando suelo usar foreach in, lo uso directamente y no hay problema. ¿Puedo preguntar por qué es así? Si quieres implementar el tipo de IEnumerator de la interfaz super, o el método declarado de GetEnumerator como se plantea en la pregunta, ¿qué deberías hacer? Gracias Respuesta: Al usar foreach in, normalmente usamos una clase de colección definida por el sistema (implementando la interfaz ICollection). Por ejemplo, arrayList, stringDictionary, array, etc. Estos están empaquetados por la plataforma y están cerca de implementar la interfaz de IEnumerator. Para que la clase que escribas pueda hacer al mismo tiempo, debes implementar la interfaz al escribir la clase. Esto permite el desplazamiento por cada uno después. Por ejemplo, define una clase de personas e implementa la interfaz de IEnumerator. Si hay un array People[] tempPeople, entonces puedes usar: foreach( p in tempPeople){ console.writeline(p.name); Esto elimina el problema de usar los loops for. En cuanto a cómo implementar la interfaz Iemumerator. Solo revisa la MSDN. También puedes buscar un libro más grueso.
|