Tôi có một lớp được gọi là GenericPermutations vừa là đếm được và vừa là điều tra viên. Công việc của nó là lấy một danh sách thứ tự các đối tượng và lặp qua từng hoán vị của chúng theo thứ tự.C# Lớp là IEnumerable AND IEnumerator cùng một lúc. Các vấn đề với điều này là gì?
Ví dụ, một số nguyên implemenation của lớp này có thể lặp qua như sau:
GenericPermutations<int> p = new GenericPermutations<int>({ 1, 2, 3 });
p.nextPermutation(); // 123
p.nextPermutation(); // 132
p.nextPermutation(); // 213
// etc.
Vì vậy, đếm được của nó theo nghĩa là nó chứa một 'danh sách' điều bạn có thể liệt kê trên. Nó cũng là một điều tra viên, bởi vì công việc của nó liên quan đến việc tìm kiếm hoán vị tiếp theo.
ISSUE: Tôi hiện đang cố gắng tích hợp IEnumerator và IEnumerable với lớp này, và có vẻ như tôi thích cả hai (thay vì sử dụng lớp phụ như IEnumerable). Vì vậy, đến nay tôi đã tránh được vấn đề với cố gắng để có được hai điều tra từ nó bằng cách đi qua một đối tượng GenericPermutation mới trong phương pháp GetEnumerator
.
Đây có phải là ý tưởng tồi không? Bất cứ điều gì khác tôi nên xem xét?
Nếu trường hợp liệt kê của bạn cũng là một ví dụ cho tất cả các điều tra viên được yêu cầu, bạn sẽ giữ trạng thái giữa chúng như thế nào? –
Ý tưởng của tôi là tôi sẽ tạo một bản sao mới của đối tượng của mình mỗi lần điều tra được yêu cầu và chuyển bản sao đó làm điều tra viên. Vì vậy, nếu một điều tra viên mới được yêu cầu, một bản sao của điều tra viên hiện tại trong tình trạng ban đầu của nó được thông qua. – jtfairbank