這是一條與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