Ho una classe chiamata GenericPermutations che è enumerabile e un enumeratore. Il suo compito è quello di prendere una lista ordinata di oggetti e iterare attraverso ogni permutazione di loro in ordine.La classe C# è IEnumerable AND an IEnumerator allo stesso tempo. Quali sono i problemi con questo?
esempio, un implemenation intero di questa classe potrebbe scorrere la seguente:
GenericPermutations<int> p = new GenericPermutations<int>({ 1, 2, 3 });
p.nextPermutation(); // 123
p.nextPermutation(); // 132
p.nextPermutation(); // 213
// etc.
Così la sua enumerabile, nel senso che esso contiene una 'lista' di cose che si possono enumerare sopra. È anche un enumeratore, perché il suo compito consiste nel trovare la prossima permutazione.
il problema: Attualmente sto cercando di integrare IEnumerator e IEnumerable con questa classe, e mi sembra come dovrebbe essere sia (piuttosto che utilizzare una classe secondaria come IEnumerable). Finora ho evitato il problema con il tentativo di ottenere due enumeratori da esso passando un nuovo oggetto GenericPermutation nel metodo GetEnumerator
.
Questa è una cattiva idea? Qualcos'altro che dovrei considerare?
Se l'istanza enumerabile è anche l'unica istanza per tutti gli enumeratori richiesti, come si manterrà lo stato tra di essi? –
La mia idea era di creare una nuova copia del mio oggetto ogni volta che viene richiesto un enumeratore e di passarla come enumeratore. Quindi, se viene richiesto un nuovo enumeratore, viene passata una copia dell'enumeratore corrente nel suo stato originale. – jtfairbank