【发布时间】:2011-03-12 00:33:17
【问题描述】:
* 重要编辑请见结尾 *
由于各种原因,我有类似的东西:
delegate void Task(QueueTask queueTask);
delegate void QueueTask(Task task);
使用 Visual Studio Express 2008,除了在 lambda 表达式中,如果我在没有明确帮助的情况下尝试在函数中调用和调用 queueTask() 时它无法推断,这或多或少都可以正常工作:
无效我的任务(队列任务队列任务) { queueTask(qt => {}); // 由于 queueTask 不带 1 个参数而失败? }这可行:
无效我的任务(队列任务队列任务) { queueTask((QueueTask qt) => {}); }这不是一个大问题,我知道我也可以通过传入另一个包含委托的对象来逃避,但我很好奇是否有办法让它按原样工作?
谢谢。
* 以下重要编辑 *
似乎只有将“TaskPool2”类放在单独的程序集中才会出现编译错误!?
命名空间测试 { 公共类TaskPool2 { 公共委托无效队列任务(任务任务); 公共委托无效任务(队列任务队列任务); 公共无效队列(任务任务){} } } 命名空间 MyApp { 课堂节目 { 静态无效 SomeFunc() { Test.TaskPool2 taskPool = new Test.TaskPool2(); taskPool.Queue(queue => { Console.WriteLine("A"); queue(q => Console.WriteLine("C")); }); } } }虽然有点复杂!
【问题讨论】:
-
请发布实际重现错误的代码。
-
对不起,请看我的编辑!这让我更加好奇!
标签: c# delegates declaration forward