*請參閱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