为什么IEnumerator即使不可达,也必须至少具有一个yield语句?

为什么要这段代码:

public IEnumerator Test()
{
}

给您一个错误:

错误CS0161'Test.GetEnumerator()':并非所有代码路径都返回一个值

Error CS0161 'Test.GetEnumerator()': not all code paths return a value

但是此代码:

public IEnumerator Test()
{
    if(false)
        yield return 0;
}

不是吗? (并按预期工作;首先MoveNext()返回false)

Doesn't? (and works as expected; first MoveNext() returns false)

当使用IEnumerators作为协程时,有时您想制作一个尚没有异步操作(不产生任何东西)但将来可能会做的协程(IEnumerator).

When using IEnumerators as coroutines, sometimes you want to make a coroutine (IEnumerator) that doesn't have an async operations yet (is not yielding anything) but might do that in future.



 1 条回答