Tengo una clase llamada GenericPermutations que es enumerable y enumerador. Su trabajo es tomar una lista ordenada de objetos e iterar a través de cada permutación de ellos en orden.La clase C# es IEnumerable Y un IEnumerator al mismo tiempo. ¿Cuáles son los problemas con esto?
ejemplo, un número entero implemenation de esta clase podría iterar a través de los siguientes:
GenericPermutations<int> p = new GenericPermutations<int>({ 1, 2, 3 });
p.nextPermutation(); // 123
p.nextPermutation(); // 132
p.nextPermutation(); // 213
// etc.
Así que es numerable en el sentido de que contiene una 'lista' de cosas que se pueden enumerar de nuevo. También es un enumerador, porque su trabajo implica encontrar la siguiente permutación.
EL PROBLEMA: Actualmente estoy tratando de integrar IEnumerator y IEnumerable con esta clase, y me parece que debería ser a la vez (en lugar de utilizar una subclase como el IEnumerable). Hasta ahora, he evitado el problema al intentar obtener dos enumeradores al pasar un nuevo objeto GenericPermutation en el método GetEnumerator
.
¿Es esta una mala idea? ¿Algo más que deba considerar?
Si su instancia enumerable es también la única instancia para todos los enumeradores solicitados, ¿cómo va a mantener el estado entre ellos? –
Mi idea era crear una nueva copia de mi objeto cada vez que se solicita un enumerador, y pasar esa copia como el enumerador. Entonces, si se solicita un nuevo enumerador, se pasa una copia del enumerador actual en su estado original. – jtfairbank