Класс C # одновременно является IEnumerable И IEnumerator. В чем заключаются проблемы?

У меня есть класс GenericPermutations, который является и перечислимым, и перечислителем. Его задача состоит в том, чтобы взять упорядоченный список объектов и перебрать каждую их перестановку по порядку.

Пример, целочисленная реализация этого класса может повторяться через следующее:

GenericPermutations<int> p = new GenericPermutations<int>({ 1, 2, 3 });
p.nextPermutation(); // 123
p.nextPermutation(); // 132
p.nextPermutation(); // 213
// etc.

Таким образом, он перечислим в том смысле, что он содержит «список» вещей, которые вы можете перечислить. Это также перечислитель, потому что его работа заключается в поиске следующей перестановки.

ПРОБЛЕМА: В настоящее время я пытаюсь интегрировать IEnumerator и IEnumerable с этим классом, и мне кажется, что они должны быть обоими (вместо использования подкласса в качестве IEnumerable). До сих пор я избегал проблемы с попыткой получить от него два перечислителя, передав новый объект GenericPermutation в методе GetEnumerator .

Это плохая идея? Что еще мне следует учесть?

7
задан jtfairbank 8 November 2011 в 22:39
поделиться