*请参阅END重要编辑*C#递归委托声明问题
由于各种原因,我有这样的:
delegate void Task(QueueTask queueTask); delegate void QueueTask(Task task);
使用Visual Studio Express 2008的这部作品或多或少罚款除了在lambda表达式中,它不能推导出如果我尝试调用并在没有明确帮助的情况下调用queueTask():
void MyTask(QueueTask queueTask) { queueTask(qt => {}); // fails with queueTask doesn't take 1 parameter? }
这工作虽然:
void MyTask(QueueTask queueTask) { queueTask((QueueTask qt) => {}); }
它不是一个巨大的问题,我知道我还可以或许通过传递包含了委托,而不是另一个对象离开,但我很好奇,如果有办法使它作为看台工作?
谢谢。
*重要编辑下面*
似乎只有当我把这个类的TaskPool2“在单独的程序我得到的编译错误!?
namespace Test { public class TaskPool2 { public delegate void QueueTask(Task task); public delegate void Task(QueueTask queueTask); public void Queue(Task task) { } } } namespace MyApp { class Program { static void SomeFunc() { Test.TaskPool2 taskPool = new Test.TaskPool2(); taskPool.Queue(queue => { Console.WriteLine("A"); queue(q => Console.WriteLine("C")); }); } } }
承认它有些复杂!
请张贴实际上重现错误的代码。 – 2010-07-05 18:36:40
对不起,请参阅我的编辑!这让我更加好奇! – iam 2010-07-06 13:32:44