gpt4 book ai didi

c# - 迭代器何时应该返回 IEnumerator 而不是 IEnumerable?

转载 作者:行者123 更新时间:2023-12-03 23:07:45 26 4
gpt4 key购买 nike

使用 yield return将方法转换为迭代器。 The return type of an iterator must be IEnumerable , IEnumerable<T> , IEnumerator , or IEnumerator<T> .

我发现迭代器只能在 foreach 中使用循环,如果它返回 IEnumerable 之一类型。鉴于此限制,何时选择 IEnumerator 才有意义?返回类型而不是 IEnumerable ?

最佳答案

说实话,很少见。我见过它以这种方式使用的唯一一次是出于某种原因使用特殊 shell GetEnumerator()方法 (在启动迭代器块机制之前),但仍然需要一个用于实际实现的迭代器块,即

public IEnumerator<T> GetEnumerator()
{
if (someScenario) return SomethingSpecialPerhapsEmptyArrayEnumerator();
if (anotherScenario) ThrowSomeException();
return DoTheThing();
}
private IEnumerator<T> DoTheThing()
{
// ... yield return
}

关于c# - 迭代器何时应该返回 IEnumerator 而不是 IEnumerable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61228799/

26 4 0