У меня есть класс 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
.
Это плохая идея? Что еще мне следует учесть?