“收益”返回不同类型?

amj*_*jad 3 c# interface

假设我们有以下代码:

public IEnumerator FirstTest()
{
   yield return 1;
}

public IEnumerable SecondTest()
{
    yield return 1;
}
Run Code Online (Sandbox Code Playgroud)

我知道代码没有逻辑,但是它是有效的,那么“ yield”如何返回不同的类型,FirstTest返回IEnumerator,SecondTest返回IEnumerable?IEnumerator和IEnumerable之间没有继承关系

Luk*_* Vo 7

根据C#语言定义,两者均有效yield return

迭代器的声明必须满足以下要求:

返回类型必须为IEnumerable, IEnumerable<T>, IEnumerator, or IEnumerator<T>

该声明不能有任何in ref或out参数。