如何在List中存储协同程序?

时间:2012-08-17 15:32:09

标签: c# mono unity3d

我想创建一个协程列表,以便在将来启动。如何在列表中存储这些函数?

假设我们有类似的功能:

IEnumerator Example() {
    while (true) {
        yield return  new WaitForFixedUpdate();
    }
}

我们无法将其存储在类似List<Func<IEnumerator >> list之类的内容中,但我们遇到编译器错误,如:

Error   1   The best overloaded method match for 'System.Collections.Generic.List<System.Func<System.Collections.IEnumerator>>.Add(System.Func<System.Collections.IEnumerator>)' has some invalid arguments

当我们打电话

           list.Add(Example);

或者如果我们使用List<Example> list,我们就没有编译错误,但是

            if (disposeActions.Any()) {
                yield return StartCoroutine(list[0]); //here we get null exception
                disposeActions.RemoveAt(0);
            }

所以我想知道如何创建一个列表来存储IEnumerator函数并能够将它的项目发送给coutines?

1 个答案:

答案 0 :(得分:2)

你的问题很难理解,但也许你正在寻找这样的东西:

var listOfFunctions = new List<Func<T, TResult>>();