Is Multiple Iterators is possible in c#?

前端 未结 3 1439
北海茫月
北海茫月 2021-01-15 19:27

Can multiple iterators (for a single class or object) is possible in c#.net? If it is give me some simple examples. Sorry if the question is not understandable and please ma

3条回答
  •  走了就别回头了
    2021-01-15 20:09

    One option would be to implement the Strategy pattern:

    1. Create separate IEnumerator classes for each traversal strategy.
    2. Create a private attribute in the collection that stores the current strategy (with a default).
    3. Create a SetStrategy method that changes that private attribute to the selected concrete strategy.
    4. Override GetEnumerator to return an instance of the current strategy.

    Of course, this means two threads trying to set the strategy at the same time could interfere, so if sharing the collection between threads is important, this isn't the best solution.

    A straight Iterator pattern would also work, which is what I believe Jon Skeet is suggesting in his first example, but you lose the syntactic sugar of being able to use foreach.

提交回复
热议问题