在c#中可以使用多个迭代器吗?

Bab*_*abu 1 c#-3.0

可以在c#.net中使用多个迭代器(对于单个类或对象)吗?如果是给我一些简单的例子.对不起,如果问题不明白,请告诉我.

Jon*_*eet 7

您当然可以创建不同的迭代器以不同的方式遍历.例如,您可以:

public class Tree<T>
{
    public IEnumerable<T> IterateDepthFirst()
    {
        // Iterate, using yield return
        ...
    }

    public IEnumerable<T> IterateBreadthFirst()
    {
        // Iterate, using yield return
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

那是你问的那种事吗?

你也可以写:

public class Foo : IEnumerable<int>, IEnumerable<string>
Run Code Online (Sandbox Code Playgroud)

但这会引起很多混乱,并且foreach循环会选择任何一个非显式实现的GetEnumerator调用.

您还可以同时在同一个集合上多次迭代:

foreach (Person person1 in party)
{
    foreach (Person person2 in party)
    {
        if (person1 != person2)
        {
            person1.SayHello(person2);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)