这是一条与Unity中的C#有关的消息,但我假定一般的C#知识将应用。C#:自定义IEnumerator?
看看下面的代码:
class myClass
{
IEnumerator myEnumerator;
public IEnumerator theEnumerator()
{
int i = 0;
while (true)
{
Debug.Log(i++);
yield return null;
}
}
public void Update()
{
if (myEnumerator == null) { myEnumerator = theEnumerator(); }
myEnumerator.MoveNext();
}
}
如果我实例类,然后调用“更新”每帧一次,我得到的日志在下面的输出:
0
1
2
3
4...
这工作正常,但是我想在IEnumerator本身中实现一些自定义功能。但是,如果我创建以下文件:
public class myIEnumerator : IEnumerator
{
public int myCustValue;
public void myCustFunction(){}
}
,然后更新oringal类,取代“的IEnumerator”的“myIEnumerator”,我得到以下错误:
The body of `myClass.theEnumerator()' cannot be an iterator block because `myIEnumerator ' is not an iterator interface type
什么我错在这里做,以及如何制作我自己的自定义IEnumerator?
我认为这是一个编译器,编译器只支持'IEnumerable','IEnumerable','IEnumerator'和'IEnumerator '。继承不适用于迭代器块。 –
Enigmativity
它在[文件](https://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx),“迭代方法和get访问 的迭代器必须满足下列要求的声明: 返回类型必须是IEnumerable,IEnumerable,IEnumerator或IEnumerator 。 声明不能有任何ref或out参数。“ –
Patrick